如何实现提交Google Form后自动发送特定Google Sheet数据邮件
实现Google Form提交后自动发送含指定Sheet数据的邮件
核心逻辑
- 监听Google Form的提交事件,提取受访者提交的密钥
- 在Google Sheet的
Database工作表中匹配密钥对应的收件邮箱及关联文档编号 - 整理非空的文档数据,自动发送格式化邮件给指定收件人
分步实现
1. 梳理Sheet数据结构
确保你的Google Sheet满足以下要求:
Database工作表至少包含5列:密钥(如ID-001)、收件邮箱(如JKL@GMAIL.COM)、DOCX编号、DOCY编号、DOCZ编号- 其他工作表(Doc X、Doc Y等)的数据已通过IF/VLOOKUP/QUERY函数汇总到
Database表,确保数据可直接读取
2. 编写Google Apps Script
打开目标Google Sheet,点击「扩展程序」→「Apps Script」,替换默认代码为以下内容:
function onFormSubmit(e) { // 获取表单提交的密钥(假设密钥在表单响应的第1列,需根据实际调整索引) const submittedKey = e.values[0]; // 打开当前Sheet及Database工作表 const ss = SpreadsheetApp.getActiveSpreadsheet(); const dbSheet = ss.getSheetByName('Database'); // 读取Database表的所有数据 const allData = dbSheet.getDataRange().getValues(); // 遍历数据匹配密钥(跳过表头行) for (let i = 1; i < allData.length; i++) { const rowData = allData[i]; const storedKey = rowData[0]; const recipientEmail = rowData[1]; const docX = rowData[2]; const docY = rowData[3]; const docZ = rowData[4]; if (storedKey === submittedKey) { // 拼接邮件内容,仅保留非空的文档编号 let emailBody = "您请求的文档编号如下:\n"; if (docX) emailBody += `- ${docX}\n`; if (docY) emailBody += `- ${docY}\n`; if (docZ) emailBody += `- ${docZ}\n`; // 发送邮件 const emailSubject = `文档请求反馈(密钥:${submittedKey})`; MailApp.sendEmail(recipientEmail, emailSubject, emailBody); // 匹配成功后退出循环,避免重复发送 break; } } }
3. 关键代码说明
onFormSubmit(e):表单提交触发的专用函数,会在收到新响应时自动执行e.values:存储表单所有提交值的数组,索引从0开始,需根据你表单中密钥问题的实际位置调整对应索引MailApp.sendEmail():Google Apps Script内置邮件发送方法,无需额外配置即可使用- 循环时跳过第1行(表头),从第2行开始匹配数据
4. 设置表单触发
- 在Apps Script编辑器左侧点击「触发器」图标
- 点击「添加触发器」,按以下配置设置:
- 选择函数:
onFormSubmit - 事件源:「从表单提交」
- 事件类型:「表单提交」
- 保存即可
- 选择函数:
5. 测试验证
- 提交测试表单,输入指定密钥(如ID-004)
- 检查对应收件邮箱(JKL@GMAIL.COM)是否收到包含DOCX-003、DOCY-003、DOCZ-003的邮件
- 若未收到,可在Apps Script编辑器的「执行记录」中查看错误信息排查问题
内容的提问来源于stack exchange,提问作者ZixMatrix
相关产品推荐
相关产品推荐

