从图书馆打开菜单上的电子表格

Fau*_* R. 5 google-apps-script

我将在几个用户之间分发一个带有onOpen菜单的电子表格.我想在库中保留菜单定义和功能,因此如果我添加一些菜单选项或更新某些功能,使用该电子表格的每个人都将自动更新.

到目前为止,在电子表格脚本上我只有这个简单的代码:

function onOpen() {
  myLib.loadMenu();
}
Run Code Online (Sandbox Code Playgroud)

菜单加载电子表格没有问题,但无论我如何命名菜单上的调用和实际功能(有或没有myLib.)我总是得到一个错误"使用选项时无法找到脚本函数doSomething"从那个菜单.

有关如何命名菜单中的函数调用和库中的实际函数的任何想法,以便使用此方法.

谢谢,福斯托

编辑-1:让我提供更多细节和示例代码

我的目标是能够从库中为该电子表格菜单添加更多选项,而无需更新每个用户的电子表格.

这是包含在电子表格脚本中的示例代码,尚未使用任何库,它可以正常工作

function onOpen() {
  testMenu();
}
function testMenu() {
  SpreadsheetApp.getActiveSpreadsheet().addMenu(
    'Testing', [
      { name: 'Do Something #1', functionName: 'someFunction1' },
      null,
      { name: 'Do Something #2', functionName: 'someFunction2' } ]);
}
function someFunction1() {
  SpreadsheetApp.getActiveSheet().getRange("A1").setValue("Hello from someFunction1");
}
function someFunction2() {
  SpreadsheetApp.getActiveSheet().getRange("A2").setValue("Bye from someFunction2");
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是获得相同的功能,但在电子表格脚本和库之间拆分代码,如下所示

在电子表格脚本上

function onOpen() {
  xsLib.testMenu();
}
Run Code Online (Sandbox Code Playgroud)

在图书馆

function testMenu() {
  SpreadsheetApp.getActiveSpreadsheet().addMenu(
    'Testing', [
      { name: 'Do Something #1', functionName: 'someFunction1' },
      null,
      { name: 'Do Something #2', functionName: 'someFunction2' } ]);
}
function someFunction1() {
  SpreadsheetApp.getActiveSheet().getRange("A1").setValue("Hello from someFunction1");
}
function someFunction2() {
  SpreadsheetApp.getActiveSheet().getRange("A2").setValue("Bye from someFunction2");
}
Run Code Online (Sandbox Code Playgroud)

在这种拆分方法中,从库调用构建的菜单在电子表格上正确显示,但是当使用该测试菜单中的选项时,我收到一条消息错误,如:"找不到脚本函数someFunction1"

Ant*_*doi 2

最后我检查了您不能提供脚本中未包含的触发器函数。您最可能需要做的是在 scpreadsheet 的脚本中创建一个包装函数。像这样的东西:

function doSomething() {
  myLib.doSomething();
}
Run Code Online (Sandbox Code Playgroud)

编辑:您正在寻找的功能当前不可用。为了达到预期的效果,您需要指定要调用的函数属于该库,并且这是不允许的。

有一个功能请求:

http://code.google.com/p/google-apps-script-issues/issues/detail?id=799

如果您有兴趣拥有此功能,请对该问题进行投票以提高其优先级。

最好的,

安东