提交表单后,如何编辑google sheets HTML UI元素?

提交表单后,如何编辑google sheets HTML UI元素?,html,google-apps-script,web-applications,google-sheets,Html,Google Apps Script,Web Applications,Google Sheets,从中,我从最上面的答案中复制了以下脚本,并添加了2个,我在下面的脚本中标记了注释 附加项gs 在下面的文件中添加了#2 Index.html 在下面的文件中添加了#1 类别: 项目: 制造商或出版商: 详细信息: 数量: 状态: 问题: 上面的脚本在到达加法#2时失败。似乎在html中找不到id=status\u value元素 注意: 我希望从.gs脚本文件更新html,因为在我的一些用例中,脚本可能需要一段时间,我希望在脚本到达脚本中的某些里程碑时更改状态消息。在服务器端运行

从中,我从最上面的答案中复制了以下脚本,并添加了2个,我在下面的脚本中标记了注释

附加项gs

在下面的文件中添加了#2

Index.html

在下面的文件中添加了#1



类别:

项目:

制造商或出版商:

详细信息:

数量:


状态:

问题:

上面的脚本在到达加法#2时失败。似乎在html中找不到id=status\u value元素

注意:

我希望从.gs脚本文件更新html,因为在我的一些用例中,脚本可能需要一段时间,我希望在脚本到达脚本中的某些里程碑时更改状态消息。

在服务器端运行“.gs”文件,在客户端运行html。您不能像同时运行一样来回传递数据,因此出现了“google.script.run”

如果要在使用该功能从客户端调用函数后从服务器端脚本发回数据,只需
return
it即可

然后,您可以使用返回的数据对客户端进行更改:

Html

.gs

请注意

。。。基于浏览器的功能(如DOM操纵或窗口API)不可用

上述情况意味着不能在服务器端代码(.gs)上使用getElementById


从我的

从 (2019年1月27日)

基本JavaScript功能

应用程序脚本基于,再加上 和1.8。 因此,除了 内置和高级 谷歌服务:你可以使用像
Array
,,
日期
RegExp
, 和 以此类推,还有数学 和
对象
全局对象。然而,由于应用程序脚本代码运行在谷歌的 服务器(非客户端,HTML服务除外 页面),基于浏览器的功能,如DOM操作或
窗口
API不可用


我实际上是在手机上写的(在长途旅行中很无聊),所以可能会有一些错误,但要点就在那里!非常感谢你。这看起来很有趣,我也许能够实现一些类似于我正在尝试做的事情。如何访问HTML中的“提交”值?如果我有一个例子,我可以根据自己的目的修改。onSuccessHandler()接受带有参数的函数。当您从使用的服务器返回一个值时,您可以访问该参数。请参阅上面示例中的“data”参数。我不知道这一点。知道很有帮助。非常感谢。
function openInputDialog() {
  var html = HtmlService.createHtmlOutputFromFile('Index').setSandboxMode(HtmlService.SandboxMode.IFRAME);
  SpreadsheetApp.getUi()
       .showModalDialog(html, 'Add Item');
}

function itemAdd(form) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  //Addition #2
  document.getElementById("status_value").innerHTML = "Submitted!"; 
  sheet.appendRow(["  ", form.category, form.item, form.manupub, form.details, form.quantity]);
  return true;
}
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <br>
  <form>
    Category:<br>
    <input type="text" name="category">
    <br>
    Item:<br>
    <input type="text" name="item">
    <br>
    Manufacturer or Publisher:<br>
    <input type="text" name="manupub">
    <br>
    Details:<br>
    <input type="text" name="details">
    <br>
    Quantity:<br>
    <input type="text" name="quantity">
    <br><br>
     <input type="button" value="Submit"
        onclick="google.script.run
            .withSuccessHandler(google.script.host.close)
            .itemAdd(this.parentNode)" />
    </form>
    <!-- Addition #1 -->
    <p>Status: </p><p id="status_value"></p>
</html>
function itemAdd(form) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0];
sheet.appendRow([" ", form.category, form.item, form.manupub, form.details, form.quantity]); 
return "Submitted" ;
 }