Apps Script Addon {docs, sheets, slides, forms} 共享一个库,该库构建仅显示默认选项的通用菜单

Apps Script Addon {docs, sheets, slides, forms} share a library that builds common menu that only shows default-option

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

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

我尽我所能遵循 guidelines 并且我已经阅读了 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)};

问题似乎是版本控制(file-menu 匹配 GCP)and/or access-control 用于共享脚本(Drive-file 或 script-library)。

“修复”后,菜单将包含“安装”;对于每个文件。 运行 onInstall()后,菜单将全部列出。必须安装per-file;不像我 wished/expected.

那样 per-user

边栏尚未正常工作。