据我了解,Google Apps Script (GAS) 提供了一个弹出对话框,对应于客户端 JS 中的警报对话框(参见:http://www.mousewhisperer.co.uk/drivebunny/message- dialogs-in-apps-script/)为了熟悉这个对话框,我准备了如下所示的测试代码:
代码.gs:
var validate=function() {
Browser.msgBox('Hello, world!', Browser.Buttons.OK); // See: http://www.mousewhisperer.co.uk/drivebunny/message-dialogs-in-apps-script/
}
function doGet() {
return HtmlService.createTemplateFromFile('index').evaluate().setTitle('Test').setSandboxMode(HtmlService.SandboxMode.IFRAME)
}
index.html:
<div>
<form>
<input type="button" value="Click Me" onclick="validate">
</form>
</div>
当我单击“Click Me”按钮时,没有看到弹出对话框,而是没有任何反应,并且 JS 控制台中报告错误,抱怨“validate”未定义。 谁能告诉我我缺少什么吗?
Browser.msgBox()
从服务器运行。 你可能已经知道了。 但你没有调用服务器。 您的 onclick
属性需要有 google.script.run.serverFunctionName();
调用。 或者,如下所示,将 google.script.run
调用放在单独的函数中。
<div>
<form>
<input type="button" value="Click Me" onclick="validate()">
</form>
</div>
<script>
window.validate = function() {
google.script.run.validate();
};
</script>
function validate() {
Logger.log('It ran!');
Browser.msgBox('Hello, world!', Browser.Buttons.OK); // See: http://www.mousewhisperer.co.uk/drivebunny/message-dialogs-in-apps-script/
}
function doGet() {
return HtmlService.createTemplateFromFile('index').evaluate().setTitle('Test').setSandboxMode(HtmlService.SandboxMode.IFRAME)
}
浏览器方法适用于 uiApp,不适用于 htmlApp。它们在服务器端运行,甚至当从客户端作为 foogle.run 函数调用时可能无法工作。它也会有副作用,因为它对客户端来说不是模态的。
只需使用客户端浏览器中现有的警报/提示 JavaScript 功能即可。