应用程序脚本加载项{文档、工作表、幻灯片、表单}共享一个库,该库构建仅显示默认选项的通用菜单



加载插件时,菜单仅显示其"帮助"选项。云控制台日志:很抱歉,从存储读取时发生服务器错误。错误代码NOT_FOUND。

插件有效。在测试实际文件(每个文件类型一个)和测试脚本编辑器时,我注意到了一些细微的差异>运行>测试为加载项。。。但我还是设法让他们俩都工作起来了但是一旦安装(直接或域),加载项将只显示一个选项:帮助。

我尽我所能遵循指导方针,我已经阅读了onInstall问题,但发现自己不知所措。

几乎所有代码都共享在一个公共库中:opAddonShared。这些与文件无关的函数被添加到插件菜单的末尾:opAddonShared.addSharedMenu(ui,menu)

const langsClearEmptyCells = {en: "   Clear Empty Cells", sv: "   Ta bort tomma celler"};
const langsClearOtherSheets = {en: "   Cut All Other Sheets", sv: "   Skär bort andra blad"};
function onOpen(e) {
let ui = SpreadsheetApp.getUi();
let menu = ui.createAddonMenu();

if (e && e.authMode == ScriptApp.AuthMode.NONE) { // ⚠ Addons are frustrating!
return menu.addItem('   Install', "onInstall").addToUi();
} 
let isLimited = e && e.authMode == ScriptApp.AuthMode.LIMITED
let lang = isLimited ? Session.getActiveUserLocale() ? 'sv' : 'en' : opAddonShared.getLanguage()
menu.addItem(langsClearEmptyCells[lang] || langsClearEmptyCells['en'],  'removeEmpty')
menu.addItem(langsClearOtherSheets[lang] || langsClearOtherSheets['en'],  'deleteOtherSheets')

if(!isLimited) {
menu.addSeparator()
menu = opAddonShared.addSharedMenu(ui, menu) //Appends file-agnostic functions
}
menu.addToUi()
}
function onInstall(e){
opAddonShared.installSharedMenu()
onOpen(e);
}
let callAddonLibraryFunction = (functionString, args) => {return opAddonShared[functionString](args)};

问题似乎是版本控制(文件菜单匹配GCP)和/或共享脚本的访问控制(驱动器文件或脚本库)。

在";fix";,菜单将包含";安装";;对于每个文件。运行onInstall()后,菜单将完全列出。它必须按文件安装;并不像我所希望/期望的那样按每个用户。

边栏还不能正常工作。

最新更新