我有一个包含以下代码的库
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Generate Code')
.addItem('iOS', 'generateIOS')
.addItem('Android', 'generateAndroid')
.addToUi();
}
并且我在同一个库中的另一个文件中
function generateAndroid(){
generateFile('Android');
}
function generateIOS(){
generateFile('iOS');
}
现在,我在脚本
中使用该库function onOpen(){
Library.onOpen();
}
但是我得到了
Script function not found: generateIOS For more information, see https://developers.google.com/apps-script/reference/base/menu#addItem(String,String)
如果我在脚本中使用库创建了一个generateIOS
函数,它就可以正常工作。我该如何解决这个问题?
答案 0 :(得分:0)
generateAndroid()
和generateIOS()
不存在于全局命名空间中,它们存在于库的命名空间中。因此,当您向UI中添加项目时,会调用" generateIOS"和" generateAndroid",脚本尝试从与onOpen()
相同的上下文中运行它们,但无法找到它们。请记住,addItem()
会将一对字符串作为参数,因此它的功能非常愚蠢,并且不知道您是指"图书馆"功能而不是全局功能。
我看到有两种可能的解决方案:
1)添加简单地将函数调用传递给Library的全局函数。
// inside the global context
function generateAndroid(){
Library.generateAndroid();
}
function generateIOS(){
Library.generateIOS();
}
2)尝试将Library命名空间添加到addItem()
字符串中(注意:我不知道这是否会起作用,但它值得一试。
.addItem('iOS', 'Library.generateIOS')
.addItem('Android', 'Library.generateAndroid')