营销自动化平台API传参至Google Apps Script发Gmail邮件失败求助
问题分析与解决方案
你的问题核心在于两点:
- 当前Google Apps Script(GAS)仅处理
GET请求,且sendMail函数的收件人、标题、内容都是硬编码固定值,完全未使用POST请求传递的参数。 - 请求体的JSON格式存在语法错误,
email字段的值未被引号包裹,不符合JSON规范。
修正步骤:
1. 更新Google Apps Script代码
替换原有代码为以下版本,新增doPost函数处理POST请求,解析传递的参数并动态发送邮件:
function sendMail(toEmail, subject, bodyContent) { // 使用传入的参数发送邮件 GmailApp.sendEmail(toEmail, subject, bodyContent); } function doPost(e) { try { // 解析POST请求的JSON体 const params = JSON.parse(e.postData.contents); // 调用sendMail,传入解析后的参数 sendMail(params.email, params.title, params.body); // 返回成功响应 return ContentService.createTextOutput(JSON.stringify({status: 'success', message: 'Email Sent!'})) .setMimeType(ContentService.MimeType.JSON); } catch (error) { // 返回错误信息便于排查 return ContentService.createTextOutput(JSON.stringify({status: 'error', message: error.toString()})) .setMimeType(ContentService.MimeType.JSON); } } // 保留doGet用于快速测试(可选) function doGet(){ return ContentService.createTextOutput('Use POST request to send emails with parameters.'); }
2. 修正POST请求体格式
确保请求体是合法JSON,email字段的模板变量需要被双引号包裹:
{ "title": "Welcome Dear {{user[\"system\"][\"firstName\"]}}", "email": "{{user[\"system\"][\"email\"]}}", "body": "We are happy to see you on board! :)" }
3. 重新部署Google Apps Script
- 打开GAS编辑器,点击右上角「部署」→「新部署」
- 类型选择「Web应用」
- 执行权限选择「我」(确保脚本能以你的身份发送邮件)
- 谁可以访问选择「任何人,甚至匿名」(根据自动化平台权限调整,匿名设置更方便测试)
- 点击「部署」,复制新的Web应用URL替换到自动化平台的API模块中。
测试验证
先用Postman发送POST请求测试,确认能动态接收参数并发送邮件后,再切换到自动化平台运行流程。
内容的提问来源于stack exchange,提问作者Sadegh
相关产品推荐
相关产品推荐

