如何在Google Apps Script中通过MailApp发送附带生成的CSV文件的邮件
实现方案
你原有代码里的data:text/csv;charset=utf-8,前缀是浏览器端触发下载用的,在Google Apps Script中发送附件不需要这个前缀,先调整CSV生成逻辑,再调用MailApp接口即可实现需求。
步骤1:修正CSV内容生成代码
去掉多余的Data URI前缀,生成纯CSV文本内容:
let array = [["name1", 2, 3], ["name2", 4, 5], ["name3", 6, 7], ["name4", 8, 9], ["name5", 10, 11]]; let lineArray = [] array.forEach((fila, index) => { let filaComas = fila.join(',') lineArray.push(filaComas) }) let csvContent = lineArray.join("\n");
步骤2:调用MailApp发送带附件的邮件
GAS的MailApp.sendEmail()方法支持传入attachments参数配置附件,你可以直接把生成的CSV字符串封装为Blob对象作为附件传入,完整示例代码如下:
function sendEmailWithCsv() { // 生成CSV内容 let array = [["name1", 2, 3], ["name2", 4, 5], ["name3", 6, 7], ["name4", 8, 9], ["name5", 10, 11]]; let lineArray = [] array.forEach((fila, index) => { let filaComas = fila.join(',') lineArray.push(filaComas) }) let csvContent = lineArray.join("\n"); // 将CSV字符串转为Blob对象,指定MIME类型和文件名 const csvBlob = Utilities.newBlob(csvContent, 'text/csv', '数据统计表.csv'); // 发送邮件 MailApp.sendEmail({ to: '收件人邮箱地址', // 替换为实际收件人邮箱 subject: 'CSV数据邮件', // 自定义邮件主题 body: '您好,附件是您需要的CSV数据文件,请查收。', // 自定义邮件正文 attachments: [csvBlob] // 附件列表,支持传入多个附件 }) }
注意事项
- 如果你的CSV内容包含中文、特殊字符(比如逗号、引号、换行),需要先对每个单元格内容做转义处理,避免CSV格式错乱,简单的转义逻辑可以参考:把单元格内容用双引号包裹,内容里的双引号替换为两个双引号
- 运行代码前需要按照IDE指引完成GAS项目的邮件发送权限授权
- 附件文件名可以自定义,保留
.csv后缀即可保证收件人可以直接识别为CSV文件下载打开
内容的提问来源于stack exchange,提问作者user16608256
相关产品推荐
相关产品推荐

