You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:04:10