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

GAS发送含Web App链接草稿时意外触发doGet请求的解决方法

GAS嵌入Web App链接的Gmail草稿调用draft.send()时意外触发请求问题

前置验证结论

经多轮试错验证:名下所有同类脚本均存在相同表现,此前看似表现不同的脚本仅因草稿发送速度更快,短时间内向doGet()发起过多请求,导致多数场景下请求未被正常执行,本质上发送草稿的操作仍会触发请求。

开发目标

在邮件正文中嵌入基于GAS开发的doGet()类型Web App链接,链接携带唯一用户标识参数,仅当收件人手动点击链接时才触发Web App逻辑,识别收件人身份完成后续操作,当前手动点击触发的逻辑本身可正常运行。

现有实现逻辑

两套遵循相同开发逻辑的脚本,均通过如下代码创建带嵌入链接的Gmail草稿:

var url_to_webapp = 'https://script.google.com/macros/s/AKf...VJ/exec?to=<email_address>&userID=<userID>&removalCode=<removalCode>' 

var html = some html...
var htmlBody = html + url_to_webapp  // 纯文本形式拼接的链接会被Gmail自动转换为<a>标签

var draft = GmailApp.createDraft(EmailAddress, emailSubject, msgBody, { 
              from: thisAlias,
              name: name, 
              replyTo: thisAlias,
              htmlBody: htmlBody
              });

var draftID = draft.getId();

所有URL参数均通过encodeURIComponent(UserID.replace(/'/g, ""))逻辑做编码处理。
调用如下代码发送草稿时出现异常:

var draft = GmailApp.getDraft(draftID);
draft.send();

异常表现:Web App会在草稿发送瞬间就收到请求,意外执行业务逻辑,不符合「仅用户点击链接才触发请求」的预期。
存在对照情况:另一套脚本使用完全相同的代码逻辑、生成同格式链接(关联不同项目下的独立Web App)、从同一Gmail账号发送草稿,却不会触发该问题。

已尝试排查方案(均未解决问题)

  • 多次复制关联电子表格及绑定的脚本项目
  • 禁用可追踪外发邮件的Streak插件
  • 检查外发链接发现,草稿创建后Gmail会自动在链接href属性后追加data-saferedirecturl="https://www.google.com/url?q=https://script.google.com/macros/s/AKf...&source=gmail&ust=1656656998227000&usg=AOvVaw1p-L0mcxAZU1pyimSRufks"谷歌跳转属性,经测试直接访问该跳转链接确实会触发Web App请求,但另一套正常运行的脚本生成的外发邮件同样追加了该属性,发送时却不会触发请求
  • 测试嵌入基于doGet(e)的邮件打开追踪像素,同样出现「发送草稿时触发请求、用户打开邮件时再次触发」的现象,说明该触发行为在特定场景下属于Gmail预设机制
  • 若通过Gmail网页端GUI手动点击发送按钮发送同一生成的草稿,不会触发Web App请求,仅通过代码调用draft.send()方法发送时才会出现意外触发问题

待解决问题

  1. 如何阻止发送草稿时产生的意外请求到达Web App?
  2. 什么原因导致部分脚本发送同类型草稿时不会触发该异常(即符合预期效果)?

内容的提问来源于stack exchange,提问作者Doctor Words

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:42:12