google.script.run.function() 返回 null
<p>在谷歌工作表上,我有一个侧边栏表单,允许用户在另一张工作表中添加信息。
我必须为每一行提供一个 ID,以便当用户添加一个 ID 时,生成一个新的 ID。</p>
<p>示例:
侧边栏表单有两个输入:标准编号(int)和标准(文本)。当用户添加这些输入时,我想将它们放入包含 3 列的工作表中:A = ID、B = 标准编号和 C = 标准。
为了生成 ID,我在服务器端创建了一个 creeID() 函数(该函数检查工作表中的最后一个 ID 并生成下一个 ID,测试时效果很好),并且当用户添加一行( “ajouter”按钮),以便获取具有此格式的选项卡<code>[ID, criteria number, criteria]</code> 并使用 <code>appendRow()</code></code> 将该选项卡推送到工作表中p>
<p>我想我可以使用 google 脚本与 <code>.withSuccessHandler()</code> 一起运行,就像这里所说的那样,我根据 @Tanaike 的帮助和这个视频尝试了一些东西。</p>
<p>一切似乎都工作正常,除了 <code>google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()</code> 返回 <code>null</code ></p>
<p>这是我的 html 文件:</p>
<pre class="brush:php;toolbar:false;"><!DOCTYPE html>
<html>
<head>
<base target="_top">
<style>
...
</style>
</head>
<body>
<p>Indicateur</p>
<input type="number" name="indicateur" id="indic" value="" min = "1" max = "32">
<p>Preuve</p>
<input type="text" name="preuve" id="preuve">
<br>
<input type="button" value="Ajouter" onclick="ajouter()">
<span class="annuler" onclick="google.script.host.close()">Annuler</span>
<script>
function ajouter() {
const inputs = document.querySelectorAll('#indic, #preuve');
let tab = [google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()];
// Récupération des valeurs
for (const input of inputs) {
tab.push(input.value);
}
// Si tous les champs sont vides
if (tab.join('') == '') {
alert('Le formulaire est vide !');
return;
}
// Vider les champs
inputs.forEach(input => input.value = '');
// Envoi dans la feuille
google.script.run.ajouterLigne(tab);
}
</script>
</body>
</html></pre>
<p>和 JavaScript 代码:</p>
<pre class="brush:php;toolbar:false;">function ajouterLigne(tab) {
const PREUVES = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES");
console.log(tab)
PREUVES.appendRow(tab);
}
function creeID() {
const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES");
let lastRow = SHEET.getLastRow();
let lastIdRange = SHEET.getRange(lastRow, 1);
let lastId = lastIdRange.getValue();
let newId;
if (lastId == "ID") {
newId = 1;
} else {
newId = lastId + 1;
};
return(newId)
}</pre></p>
对于您的脚本,
google.script.run.creeID()
不返回任何值。我认为这就是您当前问题的原因。从也许我应该像这里所说的那样使用.withSuccessHandler(),但我不知道如何使用。
,如下使用withSuccessHandler()
怎么样?在这种情况下,请按如下方式修改 Javascript 的
ajouter()
。修改后的脚本:
tab
的值,并将tab
的值和输入的值附加到电子表格中。李>参考: