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

Google Sheets自定义菜单添加多选项子菜单失效问题求助

故障原因

代码无法运行是三个明确的语法/逻辑问题导致的:

  • 方法括号未闭合:addSubMenu() 需要接收完整的子菜单对象作为参数,每个子菜单配置完成后必须补全右括号闭合方法调用,原错误代码中Regions子菜单配置完成后没有闭合括号,直接嵌套写后续逻辑,触发JS语法解析错误,导致onOpen触发时执行失败,菜单无法加载。
  • 子菜单挂载层级错误:Category子菜单被写在了Regions子菜单的链式调用内部,会被识别为Regions的下一级子菜单,而非和Regions平级的主菜单子项。
  • 子菜单命名错误:新建Category子菜单时,ui.createMenu()传入的名称参数错写为'Regions',即使语法正确也不会显示预期的Category菜单名。
修正后可运行代码
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Tracker')
      .addItem('All Regions', 'AllRegions')
      .addItem('Clear Filters', 'clearallfilters')
      .addSeparator()
      // 挂载Regions子菜单,子项配置完成后闭合addSubMenu括号
      .addSubMenu(ui.createMenu('Regions')
          .addItem('Regions1', 'Region1')
          .addItem('Regions2', 'Regions2')
          .addItem('Regions3', 'Regions3')
          .addItem('Regions4', 'Regions4')
          .addItem('Regions5', 'Regions5')
      )
      // 挂载平级的Category子菜单
      .addSubMenu(ui.createMenu('Category')
          .addItem('Category1', 'Category1')
          .addItem('Category2', 'Category2')
          .addItem('Category3', 'Category3')
      )
      // 所有菜单配置完成后渲染到UI
      .addToUi();
}
注意事项
  • Apps Script的菜单创建采用链式调用写法,每个子菜单的配置逻辑要独立包裹,平级子菜单需要在上一个addSubMenu()闭合后再调用下一个addSubMenu()。
  • 所有菜单配置完成后再调用addToUi(),不要在子菜单配置中途调用该方法。
  • 确保代码中addItem绑定的函数名(比如Region1、Category1等)都在脚本中存在对应实现,否则点击菜单项会报错。

内容的提问来源于stack exchange,提问作者Adithya Shreshti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:54:27