Google Apps 脚本中的警报对话框

问题描述 投票:0回答:2

据我了解,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”未定义。 谁能告诉我我缺少什么吗?

google-apps-script web-applications
2个回答
2
投票

Browser.msgBox()
从服务器运行。 你可能已经知道了。 但你没有调用服务器。 您的
onclick
属性需要有
google.script.run.serverFunctionName();
调用。 或者,如下所示,将
google.script.run
调用放在单独的函数中。

HTML 代码:

<div>
 <form>
  <input type="button" value="Click Me" onclick="validate()">
 </form>
</div>

<script>
  window.validate = function() {
    google.script.run.validate();
  };
</script>

代码.gs

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)
    }

0
投票

浏览器方法适用于 uiApp,不适用于 htmlApp。它们在服务器端运行,甚至当从客户端作为 foogle.run 函数调用时可能无法工作。它也会有副作用,因为它对客户端来说不是模态的。

只需使用客户端浏览器中现有的警报/提示 JavaScript 功能即可。

© www.soinside.com 2019 - 2024. All rights reserved.