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

Google App Script自动创建并发送PDF邮件功能故障求助

问题解决:Google Apps Script发送带PDF附件邮件报错

错误根源

  • createPDF函数未返回生成的PDF文件对象,导致传递给sendEmail的pdfFile参数为undefined,触发附件参数无效的报错
  • sendEmail函数中收件人被硬编码为字符串'email',未使用传入的邮箱参数

修正后的完整代码

function afterFormSubmit(e) {
  const info = e.namedValues;
  const pdfFile = createPDF(info);
  
  sendEmail(e.namedValues['email'][0],pdfFile);   
}

function sendEmail(email, pdfFile){
  // 替换硬编码收件人为传入的邮箱参数
  GmailApp.sendEmail(email, "提交确认报告", "您的表单提交已生成PDF报告,附件为详情", {
    attachments: [pdfFile], 
    name: 'My Company'
  });
}

// 表单数据转PDF逻辑(修复返回值问题)
function createPDF(info){
  const pdfFolder = DriveApp.getFolderById("1YPB0_lw2QPw5bMrmrlw3_kcIchRGQmYG");
  const tempFolder = DriveApp.getFolderById("1Um5h762rBmI-j_J8arTCmMoOEvEyKdIX");
  const templateDoc = DriveApp.getFileById("1kN5DJqi04cY638B-0yKZYg-JHaLmt1jvv6kH25PjIgc");

  const newTempFile = templateDoc.makeCopy(tempFolder);

  const openDoc = DocumentApp.openById(newTempFile.getId());
  const body = openDoc.getBody();
  body.replaceText("{timestamp}", info['Timestamp'][0]);
  body.replaceText("{name}", info['name'][0]);
  body.replaceText("{email}", info['email'][0]);
  body.replaceText("{body}", info['body'][0]);
  openDoc.saveAndClose();

  const blobPDF = newTempFile.getAs(MimeType.PDF);
  const pdfFile = pdfFolder.createFile(blobPDF).setName(info['name'][0] + " " + new Date());
  tempFolder.removeFile(newTempFile);
  
  // 新增:返回生成的PDF文件对象
  return pdfFile;
}

验证步骤

  1. 保存修正后的代码
  2. 触发一次表单提交测试,或手动模拟表单提交事件运行afterFormSubmit函数
  3. 查看执行日志确认无报错,同时检查目标邮箱是否收到带PDF附件的邮件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:12:24