javascript - 多个 .gs 文件中的多个 onOpen() 函数

标签 javascript google-apps-script google-apps

我正在尝试学习 Google Apps 脚本,我只是做了一些实验,在同一项目中创建了两个“.gs 文件”,每个文件都有一个 onOpen() 函数。

保存、关闭然后打开文档后,仅运行了一个 onOpen() 函数(Sidebar.gs 文件)。

这些需要包含在同一个文件中吗?好吧,我想我知道这是一个解决方法。我想我的问题是为什么?

Project:

Code.gs:
    function onOpen() {
    DocumentApp.getUi().createMenu("PACKT").addItem("Greeting","greeting").addToUi();
    }

    function greeting() {
    var ui = DocumentApp.getUi();
    ui.alert("Greeting", "Hello World!", ui.ButtonSet.OK);
    }

Sidebar.js:

    function onOpen() {
    var htmlOutput = HtmlService.createHtmlOutput('<button onclick="alert(\'Hello World!\');">Click Me</button>').setTitle("My Sidebar");
    DocumentApp.getUi().showSidebar(htmlOutput);
    }

谢谢!

最佳答案

您不应该在同一命名空间中拥有两个同名的函数。它根本没有意义:当 functionName() 调用发生时应该执行其中哪一个? (实际上,最后定义的函数将是幸存的函数;其余的函数都丢失得无影无踪)。

特别是,同一项目中不应有两个 onOpen 函数,无论是一个文件还是单独的文件(这些文件共享命名空间,这意味着一个文件中的函数可以从另一个文件中调用,就好像它们位于相同的文件)。

但是您的 one onOpen() 函数可以简单地调用需要运行的任何函数:

function onOpen() {
  doThisThing();
  doAnotherThing();
}

关于javascript - 多个 .gs 文件中的多个 onOpen() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132876/

相关文章:

javascript - Get as Image 生成错误的图像 - Google App Script

google-apps-script - Google Apps中添加新群组成员的自动化--使用Google Script

javascript - 如何在鼠标悬停时突出显示区域 [Fusion Table]

javascript - 谷歌脚本: Adding UI Menu always results in "Read data" menu item

javascript - 从图像列表中更改背景图像

javascript - 有没有办法在其中一个 Bootstrap 轮播指示器上方添加工具提示?

javascript - for ... in - 正在迭代的对象是否在进入循环之前仅评估一次?

javascript - 将流映射到惰性 promise 流

javascript - For 循环跳过条目

.net - 使用 Google 帐户通过非 Google API 验证 Chrome 扩展