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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:20:10