据我了解,Google Apps脚本(GAS)提供了一个弹出式对话框,对应于客户端JS中的警报对话框(参见:http://www.mousewhisperer.co.uk/drivebunny/message-dialogs-in-apps-script/)试图熟悉此对话框,我准备了如下所示的测试代码:
Code.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”。任何人都可以告诉我我错过了什么?感谢您的任何意见。
... doug
答案 0 :(得分:1)
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)
}
答案 1 :(得分:0)
浏览器方法适用于uiApp,不适用于htmlApp。它们在服务器端运行,甚至在从客户端作为foogle.run函数调用时甚至可能无法工作。它也会产生副作用,因为它不会成为客户的模态。
只需使用客户端浏览器中现有的警报/提示javascript功能。