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

Google Sheets Workspace Add-On Hello World菜单未显示问题求助

Google Workspace Add-On(Sheets)菜单不显示问题

我正尝试为Google Sheets开发Google Workspace Add-On的Hello World版本,实现带侧边栏的菜单功能。预期打开新Google表格时,「扩展程序(Extensions)>MyApp>Start」菜单会出现,点击Start后右侧将弹出显示“Hello World”的侧边栏。但实际打开表格时,扩展程序菜单中并无MyApp选项,仿佛测试部署从未加载。

已按照官方文档完成项目创建、Cloud项目关联、测试部署安装等步骤,相关代码如下:

现有代码

Common.gs(原Code.gs重命名后)

const ss = SpreadsheetApp.getActiveSpreadsheet();

function onOpen( e ) {
  ui.createAddonMenu()
    .addItem( 'Start', 'showSidebar', )
    .addToUi();
  
  const menuItems = [];
  menuItems.push({ name: 'Start' , functionName: 'showSidebar' });
  ss.addMenu( 'MyApp', menuItems, );
}

function showSidebar() {
  // code TBD
  // right now, I'm just trying to get the menu to appear
}
<html>
  <body>
    <div>Hello World</div>
  </body>
</html>

appsscript.json

{
  "timeZone":"America/Los_Angeles",
  "dependencies":{},
  "exceptionLogging":"STACKDRIVER",
  "runtimeVersion":"V8",
  "addOns":{
    "calendar":{
      "createSettingsUrlFunction":"getConferenceSettingsPageUrl",
      "conferenceSolution":[{
          "id":"my-video-conf",
          "logoUrl":"https://lh3.googleusercontent.com/...",
          "name":"My Video Conference",
          "onCreateFunction":"onCreateMyVideoConference"
        },
        {
          "id":"my-streamed-conf",
          "logoUrl":"https://lh3.googleusercontent.com/...",
          "name":"My Streamed Conference",
          "onCreateFunction":"onCreateMyStreamedConference"
        }
      ],
      "currentEventAccess":"READ_WRITE",
      "eventOpenTrigger":{
        "runFunction":"onCalendarEventOpen"
      },
      "eventUpdateTrigger":{
        "runFunction":"onCalendarEventUpdate"
      },
      "eventAttachmentTrigger":{
        "label":"My Event Attachment",
        "runFunction":"onCalendarEventAddAttachment"
      },
      "homepageTrigger":{
        "runFunction":"onCalendarHomePageOpen",
        "enabled":true
      }
    },
    "common":{
      "homepageTrigger":{
        "runFunction":"onDefaultHomePageOpen",
        "enabled":true
      },
      "layoutProperties":{
        "primaryColor":"#ff392b",
        "secondaryColor":"#d68617"
      },
      "logoUrl":"https://ssl.gstatic.com/docs/script/images/logo/script-64.png",
      "name":"Demo Google Workspace Add-on",
      "openLinkUrlPrefixes":["https://mail.google.com/",
        "https://script.google.com/a/google.com/d/",
        "https://drive.google.com/a/google.com/file/d/",
        "https://en.wikipedia.org/wiki/",
        "https://www.example.com/"
      ],
      "universalActions":[{
          "label":"Open settings",
          "runFunction":"getSettingsCard"
        },
        {
          "label":"Open Help URL",
          "openLink":"https://www.example.com/help"
        }
      ],
      "useLocaleFromApp":true
    },
    "drive":{
      "homepageTrigger":{
        "runFunction":"onDriveHomePageOpen",
        "enabled":true
      },
      "onItemsSelectedTrigger":{
        "runFunction":"onDriveItemsSelected"
      }
    },
    "gmail":{
      "composeTrigger":{
        "selectActions":[{
            "text":"Add images to email",
            "runFunction":"getInsertImageComposeCards"
          }
        ],
        "draftAccess":"METADATA"
      },
      "contextualTriggers":[{
          "unconditional":{},
          "onTriggerFunction":"onGmailMessageOpen"
        }
      ]
    },
    "docs":{
      "homepageTrigger":{
        "runFunction":"onEditorsHomepage"
      },
      "onFileScopeGrantedTrigger":{
        "runFunction":"onFileScopeGrantedEditors"
      }
    },
    "sheets":{
      "homepageTrigger":{
        "runFunction":"onOpen"
      },
      "onFileScopeGrantedTrigger":{
        "runFunction":"onFileScopeGrantedEditors"
      }
    },
    "slides":{
      "homepageTrigger":{
        "runFunction":"onEditorsHomepage"
      },
      "onFileScopeGrantedTrigger":{
        "runFunction":"onFileScopeGrantedEditors"
      }
    }
  }
}

问题排查与修复方案

1. 代码逻辑错误

未定义ui变量

onOpen函数中直接使用ui.createAddonMenu(),但ui未声明,会导致脚本执行失败,菜单无法添加。需补充定义:

function onOpen(e) {
  const ui = SpreadsheetApp.getUi(); // 新增这行
  ui.createAddonMenu()
    .addItem('Start', 'showSidebar')
    .addToUi();
}

混淆普通脚本菜单与Add-On菜单

同时使用createAddonMenu(Add-On专用菜单,显示在「扩展程序」下)和ss.addMenu(普通脚本菜单,显示在顶部主菜单)会导致逻辑冲突,且不符合Add-On规范。删除ss.addMenu相关代码,仅保留createAddonMenu的逻辑——Workspace Add-On的菜单必须通过该方法创建,才会出现在「扩展程序」菜单中。

2. 清单文件(appsscript.json)配置问题

清理无关服务配置

当前清单包含Calendar、Gmail、Drive等多个非目标服务的配置,会导致触发逻辑混乱甚至加载失败。删除addOns下除common和sheets之外的所有节点,简化后的配置如下:

"addOns":{
  "common":{
    "name":"MyApp", // 改为你预期的Add-On名称,对应「扩展程序>MyApp」
    "logoUrl":"https://ssl.gstatic.com/docs/script/images/logo/script-64.png",
    "layoutProperties":{
      "primaryColor":"#ff392b",
      "secondaryColor":"#d68617"
    },
    "useLocaleFromApp":true
  },
  "sheets":{
    "onFileOpenTrigger":{ // 配置表格打开时触发的函数
      "runFunction":"onOpen"
    }
  }
}
  • 修改common.name为MyApp,确保扩展程序菜单中显示正确的Add-On名称;
  • 将sheets下的homepageTrigger改为onFileOpenTrigger,确保打开表格时触发onOpen生成菜单。

移除未实现的函数引用

原清单中包含大量未实现的函数(如getConferenceSettingsPageUrl、onCalendarEventOpen等),会导致Add-On加载报错,必须删除相关配置。

3. 文件与部署问题

脚本文件后缀错误

Apps Script仅识别.gs后缀的脚本文件,若你的代码文件是.js后缀会被忽略,需确保所有脚本文件后缀为.gs。

测试部署后需刷新表格

安装测试部署后,必须刷新当前表格页面或关闭后重新打开,否则浏览器缓存会导致新部署的Add-On无法加载。

确认授权完整性

运行onOpen函数时需完成完整授权,若授权过程中跳过权限,会导致Add-On无法正常加载。可在Apps Script编辑器中重新运行onOpen,按提示完成所有授权步骤。

4. 完善侧边栏代码

补全showSidebar函数,确保点击Start能弹出侧边栏:

function showSidebar() {
  const html = HtmlService.createHtmlOutputFromFile('Sidebar')
    .setTitle('Hello World Sidebar');
  SpreadsheetApp.getUi().showSidebar(html);
}

内容的提问来源于stack exchange,提问作者Let Me Tink About It

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:35:22