多个 .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();
}
我正在尝试学习 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();
}