搜尋

首頁  >  問答  >  主體

google.script.run.function() 傳回 null

<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>
P粉366946380P粉366946380453 天前558

全部回覆(1)我來回復

  • P粉930448030

    P粉9304480302023-09-06 09:30:00

    對於您的腳本,google.script.run.creeID() 不傳回任何值。我認為這就是您當前問題的原因。從也許我應該像這裡所說的那樣使用.withSuccessHandler(),但我不知道如何使用。 ,如下使用withSuccessHandler()怎麼樣?

    在這種情況下,請如下修改 Javascript 的 ajouter()

    修改後的腳本:

    function ajouter() {
      const inputs = document.querySelectorAll('input[type="text"]');
      google.script.run.withSuccessHandler(tab => {
        tab = [tab];
        for (const input of inputs) {
          tab.push(input.value);
        }
        if (tab.join('') == '') {
          alert('Le formulaire est vide !');
          return;
        }
        inputs.forEach(input => input.value = '');
        google.script.run.ajouterLigne(tab);
      }).creeID();
    }
    
    • 在此修改中,當按一下按鈕時,將檢索 tab 的值,並將 tab 的值和輸入的值附加到電子表格中。

    參考:

    #

    回覆
    0
  • 取消回覆