【问题标题】:Alert Dialogue Box in Google Apps ScriptGoogle Apps 脚本中的警报对话框
【发布时间】:2015-07-22 20:34:04
【问题描述】:

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

当我点击“点击我”按钮时,没有看到弹出对话框,什么也没发生,并且在 JS 控制台中报告错误,抱怨“验证”未定义。谁能告诉我我错过了什么?感谢您的任何意见。

 ... doug

【问题讨论】:

    标签: google-apps-script


    【解决方案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>
    

    代码.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)
        }
    

    【讨论】:

    • 请注意,客户端根本不需要这样做。只需使用警报/提示等。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢。我进行了测试。很明显,客户端警报功能将起作用。我错误地认为它不会。但是,似乎我有一个更基本的问题。请注意,在我原来的帖子中,我说过 JS 控制台抱怨没有定义“验证”。我仍然有这个问题。这是我当前的代码:
    • 抱歉,试图显示我发表评论的代码。编辑太晚了。我真的很想传递我的代码。你大概可以想象它的样子。关于为什么我收到 validate-not-defined 错误的任何想法?谢谢。
    • 因为验证在服务器而不是客户端。把它放在客户端js中。在继续之前,请仔细阅读并理解服务器 (.gs) 和客户端 (.js) 代码之间的区别。
    • 知道了!感谢大家的帮助。是的,我绝对需要牢记 WRT 什么是服务器端,什么是客户端。如果有人对此有任何我应该阅读的内容,我希望有一个链接。再次感谢。
    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    相关资源
    最近更新 更多