google.script.run.function() 返回 null
P粉366946380
P粉366946380 2023-09-05 13:53:44
[HTML讨论组]
<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;">&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;base target=&quot;_top&quot;&gt; &lt;style&gt; ... &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;p&gt;Indicateur&lt;/p&gt; &lt;input type=&quot;number&quot; name=&quot;indicateur&quot; id=&quot;indic&quot; value=&quot;&quot; min = &quot;1&quot; max = &quot;32&quot;&gt; &lt;p&gt;Preuve&lt;/p&gt; &lt;input type=&quot;text&quot; name=&quot;preuve&quot; id=&quot;preuve&quot;&gt; &lt;br&gt; &lt;input type=&quot;button&quot; value=&quot;Ajouter&quot; onclick=&quot;ajouter()&quot;&gt; &lt;span class=&quot;annuler&quot; onclick=&quot;google.script.host.close()&quot;&gt;Annuler&lt;/span&gt; &lt;script&gt; function ajouter() { const inputs = document.querySelectorAll('#indic, #preuve'); let tab = [google.script.run.withSuccessHandler(data =&gt; {alert(&quot;preuve ajoutée&quot;)}).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 =&gt; input.value = ''); // Envoi dans la feuille google.script.run.ajouterLigne(tab); } &lt;/script&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p>和 JavaScript 代码:</p> <pre class="brush:php;toolbar:false;">function ajouterLigne(tab) { const PREUVES = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(&quot;PREUVES&quot;); console.log(tab) PREUVES.appendRow(tab); } function creeID() { const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(&quot;PREUVES&quot;); let lastRow = SHEET.getLastRow(); let lastIdRange = SHEET.getRange(lastRow, 1); let lastId = lastIdRange.getValue(); let newId; if (lastId == &quot;ID&quot;) { newId = 1; } else { newId = lastId + 1; }; return(newId) }</pre></p>
P粉366946380
P粉366946380

全部回复(1)
P粉930448030

对于您的脚本,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 的值和输入的值附加到电子表格中。李>

参考:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号