我正在尝试学习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);
}
谢谢!
答案 0 :(得分:3)
您应该永远在同一名称空间中具有两个具有相同名称的函数。它根本没有意义:当functionName()
调用发生时应该执行哪一个? (实际上,最后定义的函数将是幸存的函数;其余的函数在没有跟踪的情况下丢失)。
特别是,你不应该在同一个项目中有两个onOpen函数,无论是一个文件还是单独的(文件共享命名空间,这意味着一个文件中的函数可以从另一个文件中调用,就好像它们在同一个文件)。
但是你的一个 onOpen()函数可以简单地调用需要运行的任何函数:
function onOpen() {
doThisThing();
doAnotherThing();
}