如何通过Apps Script实现新建Google Docs文档自动发送邮件
问题排查与修复
现有代码存在两处核心错误:
DriveApp.getFileById()未传入目标文件ID参数,运行时会直接抛出参数缺失异常- 未将新生成的文档ID写入邮件正文,不符合随邮件发送文档ID的需求
修复后完整代码
var templateFile = DriveApp.getFileById("1baIoahNT9YJ84mnUcp1pyWR0U5v235z29vPCkiv4rIc"); var templateResponseFolder = DriveApp.getFolderById("1mmFKjNnbTy2k8ZWobtcvdtIcwyse3NVd"); var copy = templateFile.makeCopy(deptName + " " + "Cost Recovery Agreement", templateResponseFolder); // 复制生成后可直接获取ID,无需后续重复读取 var newDocId = copy.getId(); var doc = DocumentApp.openById(newDocId); var body = doc.getBody(); body.replaceText("{{DeptName}}", deptName); body.replaceText("{{DeptCo}}", deptCo); body.replaceText("{{FirstName}}", firstName); body.replaceText("{{LastName}}", lastName); doc.saveAndClose(); var subject = "Welcome to ResponseMaster!"; // 把新生成的文档ID拼入邮件正文,如需附带文档访问链接,拼接官方访问前缀与newDocId即可 var message = title + " " + lastName + "," + "\n\n" + "Thank you for choosing ResponseMaster as your dedicated software for your fire department." + "\n\n" + "新生成的协议文档ID为:" + newDocId; // 直接传入新生成的文档ID获取文件作为附件 var costRecoveryForm = DriveApp.getFileById(newDocId); MailApp.sendEmail(userEmail, subject, message, { attachments: [costRecoveryForm] });
补充说明
如果不需要附件仅发送文档ID,可删除获取文件、配置附件的相关代码,运行效率更高。
内容的提问来源于stack exchange,提问作者Kayne Parrish
相关产品推荐
相关产品推荐

