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

Multiple onOpen() functions in multiple .gs files

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

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

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

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