<p>在Google工作表上,我有一個側邊欄表單,允許使用者在另一張工作表中添加資訊。
我必須為每一行提供一個 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>返回
null
;
<p>這是我的html檔:</p>
;
<頭>
<基本目標=“_top”>
<風格>
…
</風格>
</頭>
<正文>
<p>指示器</p>
<輸入類型=“數字” name=“指示符” id="indic";值=“”分鐘=“1”最大值=“32”>
<p>普魯夫</p>
<輸入類型=“文字”; name=“preuve” id="preuve">
<br>
<輸入類型=“按鈕” value=“Ajouter” onclick=“ajouter()”>
<span class=“annuler” onclick=“google.script.host.close()”>Annuler
<腳本>
函數 ajouter() {
const 輸入 = document.querySelectorAll('#indic, #preuve');
讓 tab = [google.script.run.withSuccessHandler(data ==> {alert(“preuve ajoutée”)}).creeID()];
// 價值恢復
for(輸入的常數輸入){
tab.push(input.value);
}
// Si tous les champs sont vides
if (tab.join('') == '') {
Alert('Le Formulaire est Vide!');
返回;
}
// 維德萊斯冠軍
input.forEach(input => input.value = '');
// 煎餅
google.script.run.ajouterLigne(選項卡);
}
</腳本>
</正文>
</html></pre>
<p>與 JavaScript 程式碼:</p>
function ajouterLigne(tab) {
const PREUVES = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“PREUVES”);
控制台.log(選項卡)
PREUVES.appendRow(tab);
}
函數 creeID() {
const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“PREUVES”);
讓lastRow = SHEET.getLastRow();
讓lastIdRange = SHEET.getRange(lastRow, 1);
讓lastId = lastIdRange.getValue();
讓新的Id;
if (lastId == "ID") {
新ID = 1;
} 別的 {
新 ID = 最後 ID 1;
};
返回(新ID)
}</pre></p>
對於您的腳本,
google.script.run.creeID()
不傳回任何值。我認為這就是您當前問題的原因。從也許我應該像這裡所說的那樣使用.withSuccessHandler(),但我不知道如何使用。
,如下使用withSuccessHandler()
怎麼樣?在這種情況下,請如下修改 Javascript 的
ajouter()
。修改後的腳本:
tab
的值,並將tab
的值和輸入的值附加到電子表格中。 李>參考: