能否通过Google App Script将Google表单上传的多个附件自动随邮件发送?
Google Form多附件自动附带发送邮件实现方案
需求完全可实现,具体实现步骤和代码修改如下:
- 解析Google Sheet存储的文件链接提取文件ID
Google Form的文件上传题提交后,结果会以逗号分隔的云端硬盘链接格式存储在绑定表格的对应列中,链接默认格式为https://drive.google.com/open?id=文件ID,拆分链接提取id参数值即可获得对应文件的唯一标识。 - 批量生成符合发信要求的附件数组
遍历所有提取到的文件ID,调用DriveApp.getFileById()获取文件实例后调用.getBlob()方法,转为邮件支持的附件格式,统一存入数组即可实现多附件支持。 - 修改现有发信代码添加附件配置
将生成的附件数组传入GmailApp.sendEmail方法的Options参数的attachments字段即可。
完整参考代码
// 此处替换为你从表格对应行读取到的文件上传列原始内容,FILE_UPLOAD_COLUMN_INDEX为文件上传列在表格中的索引值 const fileLinksStr = e.values[FILE_UPLOAD_COLUMN_INDEX]; const fileLinks = fileLinksStr.split(', ').filter(link => link.trim()); const attachments = []; fileLinks.forEach(link => { const fileId = link.split('id=')[1]; try { const file = DriveApp.getFileById(fileId); attachments.push(file.getBlob()); } catch(err) { console.error(`文件ID ${fileId} 读取失败:${err.message}`); } }); // 修改后的发信调用 GmailApp.sendEmail(Recipient, subject, '', { htmlBody: htmlText, attachments: attachments });
注意事项
- 首次运行代码需要为脚本授予Google Drive读取权限,否则会触发权限报错
- 脚本执行身份需为表单所有者,默认情况下表单所有者拥有所有受访者上传文件的访问权限
- 单个邮件总附件大小不可超过Gmail发送限制(当前为25MB),超出会导致发信失败
内容的提问来源于stack exchange,提问作者Jeff Abrahams
相关产品推荐
相关产品推荐

