我正在尝试学习 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/