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

Google AppScript实现Node后端触发插件用户身份发邮件方案

需求说明
  • 使用已安装对应Google表单插件的用户邮箱ID作为发件人,向指定收件人发送邮件
  • 业务满足特定条件时,从自有Node后端触发上述发件函数
现存问题

从后端调用脚本函数时,脚本默认仅能以开发者自身身份执行,无法满足以插件安装用户身份运行的要求。

已尝试方案
  • 已参考配置指引调整部署参数,但从后端触发doPost函数时,脚本无法识别对应运行用户上下文,执行结果不符合预期
  • 现有实现代码存在明显语法问题:定义的URL变量为大写,调用时传入未定义的小写url变量,且headers参数未声明直接引用,修正前的代码如下:
function triggerdoPost() {
  var URL='https://script.google.com/macros/s/AKfycbzM97wKyc0en6UrqXnVZuR9KLCf-UZAEpzfzZogbYApD9KChnnM/exec';
  var payload = {payloadToSend : 'mail@gmail.com'};
  var method = 'post'
  var response = UrlFetchApp.fetch(url, {method : method, payload: payload, headers: headers}).getContentText();
  Logger.log(response);
  return;
}

问题根因:普通方式部署的Apps Script Web App,被无登录态的后端服务调用时不存在终端用户的OAuth授权上下文,默认只能按部署时选定的身份执行,天然无法直接识别插件安装用户的身份,必须做额外的身份映射逻辑。

实现步骤

1. 插件侧授权预埋

  • 插件首次被用户安装启用时,主动申请https://www.googleapis.com/auth/script.send_mail、https://www.googleapis.com/auth/userinfo.emailOAuth权限,引导用户完成授权流程
  • 为每个完成授权的安装用户生成唯一、可过期、可吊销的身份校验令牌,将令牌和对应用户的授权信息绑定后存储到Node后端的数据库中,做好映射关系

2. 调整脚本部署配置

  • 重新部署Web App时,将执行身份选项设置为访问Web应用的用户身份,将访问权限设置为任何人(若后端有固定出口IP,可额外加IP校验逻辑缩小权限范围)
  • 修复原有代码的语法错误,触发请求时必须携带对应用户的身份令牌,修正后的基础触发代码参考:
function triggerdoPost(targetUserToken, toMailAddress) {
  const webAppEntry = 'https://script.google.com/macros/s/AKfycbzM97wKyc0en6UrqXnVZuR9KLCf-UZAEpzfzZogbYApD9KChnnM/exec';
  const payload = {
    targetMail: toMailAddress,
    userToken: targetUserToken
  };
  const requestOptions = {
    method: 'post',
    payload: payload,
    muteHttpExceptions: true
  };
  const resp = UrlFetchApp.fetch(webAppEntry, requestOptions).getContentText();
  Logger.log(resp);
}

3. 入口逻辑校验

  • 脚本的doPost入口收到请求后,首先校验传入的userToken合法性,匹配到对应的安装用户授权上下文后,再调用发信逻辑
  • 发信时直接使用匹配到的用户权限调用MailApp.sendEmail,不要使用脚本默认的开发者身份权限
避坑提示
  • 禁止在脚本中硬编码用户账号、密码或固定授权凭证,会触发Google安全风控导致脚本被封禁
  • 身份令牌必须设置合理的过期时间,支持用户主动吊销,避免令牌泄露引发越权发信风险
  • 若需要更高的可控性,可跳过Apps Script的Web App触发层:在后端存储用户的OAuth refresh token,需要发信时直接刷新生成access token,调用官方Gmail API完成发信,完全绕开Apps Script的身份识别限制,稳定性更高

内容的提问来源于stack exchange,提问作者Chirag Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:01:09