找不到Google Apps脚本库嵌套函数

Google Apps Script Library nested function not found

本文关键字:嵌套 函数 脚本 Google Apps 找不到      更新时间:2023-09-26

我有一个带有以下代码的库

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函数,它就可以工作了。我该如何解决这个问题?

generateAndroid()generateIOS()不存在于全局命名空间中,它们存在于库的命名空间中。因此,当您向UI中添加调用"generateOS"answers"generateAndroid"的项目时,脚本会尝试从与onOpen()相同的上下文中运行它们,但找不到它们。请记住,addItem()使用一对String作为参数,因此它是一个非常愚蠢的函数,并且不知道您指的是"库"函数而不是全局函数。

我看到两种可能的解决方案:

1) 添加只需将函数调用传递给库的全局函数。

// inside the global context
function generateAndroid(){
    Library.generateAndroid();
}
function generateIOS(){
    Library.generateIOS();
}

2) 尝试将Library名称空间添加到addItem()字符串中(注意:我不知道这是否有效,但值得一试

.addItem('iOS', 'Library.generateIOS')
.addItem('Android', 'Library.generateAndroid')