搜索

首页  >  问答  >  正文

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> 返回 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粉366946380451 天前556

全部回复(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
  • 取消回复