Google Apps脚本中的提醒对话框

时间:2015-07-22 20:34:05

标签: google-apps-script

据我了解,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

2 个答案:

答案 0 :(得分:1)

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>

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

答案 1 :(得分:0)

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

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