Google Forms自动邮件脚本:多文件附件功能修复需求
批量附加Google Forms上传的所有文件到邮件
问题根源
你当前代码里只取了上传文件数组的第一个元素([0]),所以不管传几个文件,只会把第一个加到邮件里。要支持1-5个文件,得把所有上传的文件ID都转成附件。
修改后的可运行代码
// 获取表单返回的所有上传文件ID数组 var fileIds = answers["XXXXX"]; // 用来存所有附件的数组 var attachments = []; // 逐个处理每个文件ID,转成邮件能识别的格式 fileIds.forEach(function(fileId) { var targetFile = DriveApp.getFileById(fileId); attachments.push(targetFile.getBlob()); }); MailApp.sendEmail({ name: "Mailing", to: "你的目标收件邮箱", cc: "抄送邮箱", subject: "邮件主题", htmlBody: "<p>你的邮件内容</p>", noReply: true, attachments: attachments // 把所有附件传进去 });
关键说明
answers["XXXXX"]本身就是个数组,上传1个文件时长度是1,传5个就是5,不用单独写变量对应每个文件。- 用
forEach遍历数组,把每个ID对应的文件转成Blob格式(邮件附件要求的格式),塞进attachments数组里。 - 最后把整个数组传给
sendEmail的attachments参数,就能一次性附加所有上传的文件。
小提醒
- 原代码里
htmlBody末尾多了个+号,记得删掉,不然会报错。 - 可以去Google Forms的文件上传字段设置里,确认允许上传的文件数量上限(默认最多10个,改成5个就行)。
内容的提问来源于stack exchange,提问作者Xavier Navarro
相关产品推荐
相关产品推荐

