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; }
验证步骤
- 保存修正后的代码
- 触发一次表单提交测试,或手动模拟表单提交事件运行
afterFormSubmit函数 - 查看执行日志确认无报错,同时检查目标邮箱是否收到带PDF附件的邮件
内容的提问来源于stack exchange,提问作者Justin Holt
相关产品推荐
相关产品推荐

