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

Google Apps Script的doPost函数嵌入邮件发送功能失败,求助

解决doPost运行时自动发送Gmail的问题

核心问题排查与修复步骤

1. 确认Web App部署权限

问题大概率出在权限配置错误:
重新部署Web App时,必须选择**“以我自己的身份运行”**——MailApp.sendEmail需要使用你的Gmail权限发送邮件,若选“以访问者身份运行”,会因权限不足导致邮件发送失败。

2. 正确调用邮件发送逻辑

把邮件发送代码放在setValues之后、return之前的try块里(确保表单数据写入成功后再发邮件),还可以结合表单提交数据优化邮件内容,让通知更实用。

修改后的完整代码:

// 替换成你的收件邮箱
const RECIPIENT_EMAIL = "你的邮箱地址";

function doPost(e) {
  Logger.log(JSON.stringify(e));
  const lock = LockService.getScriptLock();
  lock.tryLock(10000);

  try {
    const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'));
    const sheet = doc.getSheetByName(sheetName);

    const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
    const nextRow = sheet.getLastRow() + 1;

    const newRow = headers.map(header => {
      return header === 'Date' ? new Date() : e.parameter[header];
    });

    // 写入表单数据到表格
    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);

    // 构建带表单数据的邮件内容
    const subject = "新表单提交通知";
    let body = "收到新的表单提交,内容如下:\n\n";
    headers.forEach((header, index) => {
      body += `${header}: ${newRow[index]}\n`;
    });

    // 发送邮件
    MailApp.sendEmail(RECIPIENT_EMAIL, subject, body);

    return ContentService
      .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (e) {
    Logger.log(e.stack);
    return ContentService
      .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e.message }))
      .setMimeType(ContentService.MimeType.JSON);
  } finally {
    lock.releaseLock();
  }
}

3. 验证部署与测试

  • 重新部署Web App,确认权限设置正确;
  • 提交一次表单,检查Gmail收件箱是否收到通知;
  • 若仍失败,查看Google Apps Script的执行日志(左侧菜单“执行”),定位具体错误(比如邮箱格式错误、表头与表单字段不匹配等)。

常见错误点

  • 未替换RECIPIENT_EMAIL为实际收件邮箱;
  • Web App部署时权限选择错误;
  • 邮件发送代码放在return语句之后,导致代码未执行;
  • 表单字段与表格表头不匹配,导致newRow数据异常影响邮件构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:00:07