我一直在经历 Google Workplace Marketplace 插件发布过程,但我的 onOpen 函数和身份验证模式遇到了问题。我以为我已经纠正了它,但是当我使用已安装但未启用的旧版编辑器(auth mode NONE)将其作为附加组件进行测试时,没有菜单显示,并且我在控制台中收到以下消息:
Google Apps 脚本:例外:您无权执行该操作。
当我在编辑器中运行 onOpen 函数同时将其作为附加组件进行测试时,我不断收到一条错误消息,指出第 6 行的以下内容(onOpen 中菜单变量的声明)
无法从此上下文中调用 SpreadsheetApp.getUi()。
我的代码如下。我一直在查看 StackOverflow 上的其他答案,但找不到任何解决方案。我没有使用在其他地方提到的作为问题的团队驱动器。我还经历并删除了任何全局变量声明,但没有运气。所以我有点难过。
function onInstall(e) {
onOpen(e);
}
function onOpen(e) {
var menu = SpreadsheetApp.getUi().createAddonMenu();
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
menu.addItem('Enable Khan2Canvas','mainMenu');
menu.addToUi();
} else {
mainMenu();
}
}
function mainMenu() {
var ui = SpreadsheetApp.getUi();
ui.createAddonMenu()
.addItem('Import Data', 'importDataMenu')
.addSubMenu(ui.createMenu('Send Scores')
.addItem('Send All Assignments', 'sendAllMenu')
.addItem('Send Selected Assignments', 'sendSelectedMenu')
.addItem('Clear Selections', 'resetSelectedMenu'))
.addSeparator()
.addSubMenu(ui.createMenu('Setup')
.addItem("Launch Setup", "launchSetupMenu")
.addItem("Update Sheet", "updateSheetMenu")
.addItem("Install Triggers", 'installTriggersMenu')
.addItem("Create Data Folder", "createDataFolderMenu")
.addItem("Import Roster", "importRosterMenu")
.addItem("Download Courses", "downloadCoursesMenu"))
.addSubMenu(ui.createMenu('Reformat')
.addItem("Scores", 'formatScoresMenu')
.addItem("Settings", 'formatSettingsMenu')
.addItem("DATA", 'formatDATAMenu')
.addItem("All", 'formatAllMenu'))
.addSubMenu(ui.createMenu('Rebuild')
.addItem("Scores", 'rebuildScoresMenu')
.addItem("Settings", 'rebuildSettingsMenu')
.addItem("DATA", 'rebuildDATAMenu')
.addItem("All", 'rebuildAllMenu'))
.addSubMenu(ui.createMenu('Reset')
.addItem("New Grading Term", 'newGradingTermMenu')
.addItem("New Class", 'newClassMenu')
//.addItem("New Academic Year",'newAcademicYearMenu')
.addItem("All", 'resetAllMenu'))
.addSubMenu(ui.createMenu('Info')
.addItem("Documentation", 'documentationMenu')
//.addItem("License", 'licenseModal')
.addItem("Donate", 'donateMenu')
.addItem("Contact", 'contactMenu')
.addItem("About", 'aboutModal'))
.addItem("Show/Hide Options", "showHideOptionsMenu")
.addToUi();
}