Google Forms Apps Script插件部署遭拒及显示异常求助
问题分析与解决方案
核心问题
你的插件被驳回的关键原因是:onOpen/onInstall函数中调用了需要授权的authentication()逻辑。Google插件审核时,会在未授权的环境下测试onOpen/onInstall,此时涉及授权操作的函数会执行失败,导致菜单创建逻辑中断,最终只显示默认的Help按钮(而你本地测试时已完成授权,所以能正常显示菜单)。
具体解决方案
1. 拆分逻辑,延迟授权判断到菜单点击时
将权限判断从菜单创建阶段移到菜单点击的处理函数中,确保onOpen/onInstall仅负责创建菜单,不涉及任何需要授权的操作:
function onInstall(e) { onOpen(e); }; function onOpen(e) { // 直接创建基础菜单,不做权限判断 FormApp.getUi() .createMenu("AirPet") .addItem("Open menu", "handleMenuClick") .addToUi(); }; // 菜单点击后再执行权限判断与对应逻辑 function handleMenuClick() { const {a, l} = authentication(); l && a ? show_popup() : show_popup_expiry(); };
2. 确保onOpen/onInstall的纯净性
Google插件审核要求这两个函数必须满足:
- 仅用于创建/显示菜单,不包含任何可能抛出异常的逻辑
- 不调用需要用户授权的服务(如外部API、私有数据读写等)
- 不执行复杂计算或条件判断
3. 检查appsscript.json配置
确认插件配置中addOns部分正确绑定触发器,且权限声明仅包含必要项:
{ "timeZone": "Asia/Shanghai", "dependencies": {}, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "addOns": { "forms": { "homepageTrigger": { "runFunction": "onOpen", "enabled": true }, "onInstallTrigger": { "runFunction": "onInstall", "enabled": true } } } }
4. 模拟审核环境测试
用未授权过该插件的全新Google账号,或浏览器匿名模式测试插件安装与菜单显示,复现审核环境下的状态,验证修改后的逻辑是否正常。
内容的提问来源于stack exchange,提问作者Nik Ustinov
相关产品推荐
相关产品推荐

