部署Google Apps Script为表格插件后菜单项不显示求助
问题排查与修复方案
嘿,我一眼就看到问题所在了——你在AuthMode.NONE的分支里没调用menu.addToUi()!这就是为什么其他用户安装后只能看到主菜单,子菜单不显示的核心原因。
具体修复方法
把menu.addToUi()移到if-else分支的外面,确保不管插件处于什么授权状态,都能将创建好的菜单渲染到UI中:
function onInstall(e) { onOpen(e); } function onOpen(e) { var menu = SpreadsheetApp.getUi().createAddonMenu(); if (e && e.authMode == ScriptApp.AuthMode.NONE) { // 未授权状态下显示的菜单项 menu.addItem('Submit to Level1', 'P_Level1'); menu.addSeparator(); menu.addItem('Submit to Level2', 'P_Level2'); } else { // 已授权状态下的逻辑 var properties = PropertiesService.getDocumentProperties(); var workflowStarted = properties.getProperty('workflowStarted'); // 这里两种情况的菜单项完全一致,可以简化重复代码 menu.addItem('Submit to Level1', 'P_Level1'); menu.addSeparator(); menu.addItem('Submit to Level2', 'P_Level2'); } // 关键:一定要在这里调用addToUi,确保所有状态下都能显示菜单 menu.addToUi(); }
问题原因解释
- 你自己测试时,因为已经给插件授权过,打开表格时插件处于
AuthMode.LIMITED或FULL状态,会走到else分支并执行menu.addToUi(),所以菜单能正常显示。 - 但其他用户刚安装插件时还未授权,打开表格时插件处于
AuthMode.NONE状态,此时你的代码只在if分支里添加了菜单项,却没调用addToUi()把菜单渲染到界面上,自然就只能看到Add-On的默认主菜单,子菜单根本没被加载出来。
内容的提问来源于stack exchange,提问作者Sai Krishna
相关产品推荐
相关产品推荐

