如何在Gmail中添加按钮以运行Google Apps Script?
我明白你现在的困扰——好不容易写好的图片备份脚本,想做成Gmail插件方便随时用,结果跟着官方指南走却卡壳了。别着急,我帮你一步步排查和解决问题,毕竟刚接触Gmail插件和Apps Script的时候踩坑太正常了!
第一步:先检查核心配置文件(appsscript.json)
Gmail插件的manifest配置文件是重中之重,很多新手栽在这里。你需要确保appsscript.json里包含了插件运行的必要参数:
- 首先,
oauthScopes必须涵盖你需要的权限:比如读取邮件、操作Drive(如果存图片到Drive)、显示插件UI的权限 - 其次,
addOns字段要正确指定Gmail插件的触发逻辑,比如什么时候显示你的按钮
给你一个参考配置,替换成你的需求即可:
{ "timeZone": "Asia/Shanghai", "dependencies": {}, "oauthScopes": [ "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/script.container.ui" ], "addOns": { "gmail": { "contextualTriggers": [ { "unconditional": {}, "onTriggerFunction": "showBackupImageButton" } ], "primaryColor": "#4285F4", "secondaryColor": "#34A853" } }, "runtimeVersion": "V8" }
注意:onTriggerFunction是你用来生成插件按钮的函数名,必须和你脚本里的函数完全对应。
第二步:编写插件UI和适配的业务逻辑
你之前的脚本是提取图片的核心逻辑,但插件需要专门的函数来生成Gmail里的按钮界面,还要适配插件的触发环境:
1. 生成插件按钮的函数
这个函数负责在Gmail右侧边栏显示你的备份按钮:
function showBackupImageButton(e) { // 创建备份按钮,点击后调用图片提取函数 var backupButton = CardService.newTextButton() .setText("备份邮件内嵌图片") .setOnClickAction(CardService.newAction() .setFunctionName("extractAndBackupImages")); // 把按钮放到卡片里(Gmail插件的UI必须用卡片承载) var cardSection = CardService.newCardSection().addWidget(backupButton); var card = CardService.newCardBuilder().addSection(cardSection).build(); // 返回卡片,让Gmail显示出来 return [card]; }
2. 适配插件环境的图片备份函数
你的原代码可能是手动指定邮件ID,现在要改成从插件触发事件里获取当前打开的邮件ID:
function extractAndBackupImages(e) { // 从插件事件中拿到当前打开的邮件ID var currentMessageId = e.gmail.messageId; var message = GmailApp.getMessageById(currentMessageId); // 提取内嵌图片(筛选inline类型的附件) var embeddedImages = message.getAttachments().filter(attachment => attachment.isInline()); // 备份到Drive(这里替换成你的文件夹ID) var targetFolder = DriveApp.getFolderById("你的Drive文件夹ID"); embeddedImages.forEach(img => targetFolder.createFile(img)); // 给用户返回操作成功的提示 return CardService.newActionResponseBuilder() .setNotification(CardService.newNotification() .setText(`备份完成!共保存${embeddedImages.length}张内嵌图片`)) .build(); }
第三步:测试和排查常见问题
- 测试插件:在脚本编辑器里点击「测试部署」→「测试Gmail插件」,打开新的Gmail窗口后,随便打开一封邮件,看看右侧边栏有没有你的插件按钮。
- 权限授权:第一次运行会弹出授权请求,一定要用自己的Google账号完成授权;如果是工作域账号,可能需要管理员允许。
- 常见坑点:
- 必须用V8运行时(配置里的
runtimeVersion设为"V8"),旧版本不兼容Gmail插件 - 函数执行时间不能超过30秒,如果图片太多,先测试少量图片的情况
- 检查脚本编辑器的「执行记录」:点击「查看」→「执行记录」,如果有报错,里面会明确告诉你是权限不足、函数名拼写错误还是其他问题
- 必须用V8运行时(配置里的
- 插件启用检查:打开Gmail→右上角设置→「查看所有设置」→「插件」,确认你的插件已经被启用,没启用的话手动打开。
内容的提问来源于stack exchange,提问作者memrat
相关产品推荐
相关产品推荐

