gpt4 book ai didi

javascript - 库定义的 Google Sheets 菜单

转载 作者:行者123 更新时间:2023-12-03 04:15:10 25 4
gpt4 key购买 nike

我目前正在研究一种将更新分发到 Google 表格的方法,而用户无需在最后更新任何内容。这符合我必须满足的规范。到目前为止,这是使用应用程序脚本库和每个工作表绑定(bind)脚本的样板代码来完成的。

现在人们希望在工作表中拥有自定义菜单,其菜单文本和功能也可以集中更新。我对如何实现这一目标的想法是在库中按如下方式定义菜单项及其相关函数。

function getMenu() {
var menus = []
var obrMenu = {name: 'obrMenu', menuItems: []};
obrMenu['menuItems'].push({name: "Alert", func: "alert('Success')"});
menus.push(obrMenu);
return menus;
}

然后在容器脚本中使用以下内容将其转换为可用于创建菜单的内容。

function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menus = lib.getMenu();
for (var i = 0; i < menus.length; i++) {
var cur = menus[i];
var items = cur['menuItems'];
var menuItems = [];
for (var j = 0; j < items.length; j++) {
var curFunc = new Function(
"return function " + items[j]['name'] + "(){" + items[j]['func'] + "}"
)();
menuItems.push({name: items[j]['name'], funcName: curFunc.name});
}
ss.addMenu(cur['name'], menuItems);
}
}

运行此方法时会产生错误

Invalid argument: subMenus (line 15, file "Code")

其中 subMenus 是我所谓的 menuItems 的 Apps 脚本参数名称。虽然我认为这个问题可能与生成函数的范围有关,但我似乎不知道如何解决它。

如有任何建议,我们将不胜感激。非常感谢。

最佳答案

修复此行

      menuItems.push({name: items[j]['name'], functionName: curFunc.name});

使用“funcName”而不是 GAS 文档中定义的“functionName”会造成困惑。显然,子菜单对象属性名称无法更改。

关于javascript - 库定义的 Google Sheets 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44172941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com