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

如何将Drive中的GAS脚本转为Add-On?Manifest文件创建疑问

把现有Google Apps Script转成Gmail附加组件?看这篇就够了

嘿,我明白你看官方文档时的困惑——Manifest文件确实是入门附加组件的第一个坎,我帮你把整个流程拆得明明白白,从创建Manifest到适配你的Drive脚本,一步一步来:

先搞懂Manifest到底是什么

简单说,appsscript.json就是你的附加组件的"身份证+说明书":它告诉Google这个附加组件叫什么、能在Gmail的哪个位置显示、需要哪些权限访问你的数据,还有触发它的入口函数是什么。之前的独立脚本可能没用到它,但转成附加组件必须要有。

第一步:在编辑器里启用Manifest文件

你现在的脚本编辑器里可能看不到这个文件,先把它调出来:

  • 点右上角的齿轮图标(设置)
  • 勾选「显示appsscript.json清单文件」
  • 回到编辑器左侧,就能看到appsscript.json文件了,接下来我们要给它填内容

第二步:写一个适配你Drive脚本的基础Manifest模板

我给你一个最实用的模板,你可以直接替换里面的参数,适配你的需求:

{
  "timeZone": "Asia/Shanghai", // 换成你所在的时区,比如"America/Los_Angeles"
  "dependencies": {},
  "exceptionLogging": "STACKDRIVER",
  "oauthScopes": [
    "https://www.googleapis.com/auth/gmail.addons.execute",
    "https://www.googleapis.com/auth/gmail.readonly",
    // 这里加你原脚本用到的Drive权限,比如只读就加下面这个,需要修改就换对应的权限
    "https://www.googleapis.com/auth/drive.readonly"
  ],
  "gmail": {
    "name": "我的Drive工具", // 改成你的附加组件名字
    "logoUrl": "https://your-logo-link.com/logo.png", // 可选,放个图标链接,没有就先删掉这行
    "primaryColor": "#4285F4", // 自定义主色调,比如Google蓝
    "secondaryColor": "#34A853", // 自定义次色调
    "contextualTriggers": [
      {
        "unconditional": {},
        "onTriggerFunction": "buildAddOnUI" // 这个是附加组件启动时要跑的函数,后面要写
      }
    ],
    "openLinkUrlPrefixes": [
      "https://drive.google.com/" // 如果你的脚本要打开Drive链接,必须加这个
    ]
  }
}

第三步:把你的Drive脚本适配成附加组件逻辑

原脚本是独立运行的,现在要让它在Gmail的附加组件面板里工作,得做两个关键修改:

1. 写启动时生成UI的函数

就是Manifest里指定的buildAddOnUI,它负责在Gmail侧边栏生成你的附加组件界面:

function buildAddOnUI(e) {
  // 先建一个卡片,这是附加组件的核心UI单元
  const mainCard = CardService.newCardBuilder()
    .setHeader(CardService.newCardHeader().setTitle("我的Drive文件助手"))
    .addSection(CardService.newCardSection()
      .addWidget(CardService.newTextButton()
        .setText("查看我的Drive文件")
        .setOnClickAction(CardService.newAction()
          .setFunctionName("getMyDriveFiles")))) // 点击按钮就调用你原有的Drive逻辑函数
    .build();

  // 返回卡片,这样Gmail侧边栏就能显示了
  return [mainCard];
}

2. 改造你的Drive操作函数

把原有的Drive文件处理逻辑改成能在附加组件里返回UI的形式,比如:

function getMyDriveFiles() {
  // 这里复制你原脚本里获取Drive文件的逻辑
  const files = DriveApp.getFiles();
  let fileList = "";
  let count = 0;
  while (files.hasNext() && count < 10) { // 限制显示10个,避免太长
    const file = files.next();
    fileList += `- ${file.getName()} (${file.getUrl()})\n`;
    count++;
  }

  // 建一个新卡片显示文件列表
  const resultCard = CardService.newCardBuilder()
    .setHeader(CardService.newCardHeader().setTitle("最近的Drive文件"))
    .addSection(CardService.newCardSection()
      .addWidget(CardService.newTextParagraph().setText(fileList)))
    .build();

  // 返回这个卡片,让附加组件跳转到结果页面
  return CardService.newActionResponseBuilder()
    .setNavigation(CardService.newNavigation().pushCard(resultCard))
    .build();
}

第四步:测试和部署

  • 先点编辑器右上角的「测试部署」,选择「测试为Gmail附加组件」,然后打开Gmail,就能在侧边栏看到你的附加组件了
  • 如果要正式发布,点「部署」->「部署为附加组件」,按照提示填好信息就行

几个关键提醒

  • 权限一定要对应:Manifest里的oauthScopes必须包含所有你脚本用到的权限,少了会直接报错
  • 只能用CardService做UI:附加组件不能用原脚本的HtmlService,除非是通过链接打开外部页面
  • 触发条件可以自定义:如果不想让附加组件在所有邮件里显示,可以把contextualTriggers改成基于邮件内容的触发(比如包含特定关键词的邮件)

内容的提问来源于stack exchange,提问作者Dan Goldenberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:09:45