如何在AppScript中添加文件附件并发送邮件?报错求助
修复Google Apps Script邮件附件发送错误
错误原因及修正点:
- 文件ID格式错误:
DriveApp.getFileById()仅接受纯文件ID,你当前使用的字符串包含了Drive文件URL的/edit后缀,必须去掉这部分。 - 变量重复声明:重复定义了
file变量,会导致逻辑冲突,需合并为一次声明。 - 未定义收件人变量:代码中使用的
recipientList未赋值,应替换为从表格B1单元格获取的address变量。 - 冗余邮件发送调用:代码里调用了两次
MailApp.sendEmail(),第一次无附件的调用属于多余操作,需删除。
修正后的完整代码:
function myFunction() { let sheet = SpreadsheetApp.getActiveSpreadsheet(); let address = sheet.getRange("B1").getValue(); let subject = sheet.getRange("B2").getValue(); let body = sheet.getRange("B3").getValue(); // 仅保留纯文件ID,去掉/edit后缀 const fileId = "1J1MuYLLPYkviZ4M5Li8ZCLtiqJHQGJk_MzPMz1uVE6c"; // 获取Drive文件对象 const file = DriveApp.getFileById(fileId); // 发送带附件的邮件 MailApp.sendEmail({ to: address, subject: subject, body: body, attachments: [file.getAs(MimeType.PDF)] // 若需原文件格式,可替换为file }); }
额外说明:
- 如果不需要将文件转为PDF格式,直接使用
file作为附件参数即可,即attachments: [file]。 - 确保当前脚本拥有访问该Drive文件的权限(文件需与脚本所有者共享,或脚本以所有者身份运行)。
内容的提问来源于stack exchange,提问作者Amir Rouzati
相关产品推荐
相关产品推荐

