我在运行脚本时遇到这个问题。前一天,如果对我来说效果很好。 我确实清除了 Chrome 浏览器的所有缓存,并且也尝试了另一台笔记本电脑,但问题仍然如此。 请帮我解决这个问题。
我正在运行的代码是:
function onOpen(e) {
var menu = SpreadsheetApp.getUi().createMenu('Reporting Tools');
menu.addItem('Create Unit Scorecards', 'HSIPScorecard2021CountryScripts.createInputSheets');
menu.addItem('Notify Unit H&S Heads', 'HSIPScorecard2021CountryScripts.sendNotifications');
menu.addItem('Consolidate Unit Data', 'HSIPScorecard2021CountryScripts.Consolidate');
menu.addToUi();
}
我上周刚刚遇到了同样的问题。浪费了几天的时间,发现是使用开发模式引用了一个库导致的。将其更改为部署版本解决了这个问题。
假设库的名称是正确的,你可以这样写:
function onOpen(e) {
SpreadsheetApp.getUi().createMenu('Reporting Tools')
.addItem('Create Unit Scorecards', 'HSIPScorecard2021CountryScripts.createInputSheets');
.addItem('Notify Unit H&S Heads', 'HSIPScorecard2021CountryScripts.sendNotifications');
.addItem('Consolidate Unit Data', 'HSIPScorecard2021CountryScripts.Consolidate');
.addToUi();
}
为了解决此问题,需要检查两件事。
我也有同样的错误... 看来该库(在您的例子中是
HSIPScorecard2021CountryScripts
)引用了另一个库(BasicTools
)。
从拥有两者的帐户来看,它起作用了。然而,从任何其他帐户,都会出现该错误。即使授予了编辑权限。
解决方案是将函数从
BasicTools
移动到 HSIPScorecard2021CountryScripts
(并修复函数调用)。
因此,简而言之,另一种可以尝试的解决方案是确保您正在使用的库不使用任何其他库。
在父库中使用可安装触发器(而不是依赖脚本中的
onOpen()
)也可以修复此问题。
ScriptApp.newTrigger('exported.createDefaultMenuAndAddToUI')
.forSpreadsheet(SpreadsheetApp.getActive())
.onOpen()
.create();
这会给您带来一个新问题,因为菜单项操作超出了依赖库范围。我管理引用库及其依赖脚本需要访问的内容,如下所示:
function getExports () {
return {
/* TRIGGERS */
hourlyCronTask,
createDefaultMenuAndAddToUI,
/* MENU ITEMS */
actionInitialHelp,
...
};
}
const exported = getExports();
然后在依赖脚本中
Code.js
const exported = MyParentLibrary.getExports();
这些需要在可提升函数中定义,而不是常量,因为只有这些会暴露给依赖脚本。
我遇到了这个错误,删除了编辑器仍在寻找的库。从您的 AppScript 中删除该库,问题就应该得到解决