提交表单后,如何编辑google sheets HTML UI元素?
从中,我从最上面的答案中复制了以下脚本,并添加了2个,我在下面的脚本中标记了注释 附加项gs 在下面的文件中添加了#2 Index.html 在下面的文件中添加了#1提交表单后,如何编辑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时失败。似乎在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" ;
}