基于Google Forms问卷答题结果的Apps Script条件邮件触发实现咨询
Google Forms 答题分流触发邮件实现方案
前置准备
- 确认表单设置中已开启「收集电子邮件地址」选项,否则无法获取用户联系邮箱完成邮件投递
- 核对目标单选题「您是否有兴趣领取免费健身体验日通卡?」的选项值严格为「是」「否」,无多余空格、特殊符号或大小写差异,避免匹配失效
- 将两类选项对应的邮件正文(含配套健身社区引导内容)分别整理为独立Google Docs文档,记录每个文档的ID(可从文档链接路径中提取
/d/与/edit之间的字符串)
核心实现代码
将以下代码粘贴至绑定该表单的Apps Script编辑器中,修改顶部CONFIG配置区的参数为你的实际业务值即可:
const CONFIG = { // 与表单中目标单选题的完整文本保持完全一致 TARGET_QUESTION_TEXT: "您是否有兴趣领取免费健身体验日通卡?", // 选项值与对应邮件文档ID的映射关系 RESPONSE_DOC_MAP: { "是": "替换为选择「是」对应的邮件内容文档ID", "否": "替换为选择「否」对应的邮件内容文档ID" }, // 统一使用的邮件主题前缀 MAIL_SUBJECT_PREFIX: "健身体验服务相关通知" } // 表单提交触发的主执行函数 function onFormSubmit(e) { const submitResponse = e.response; const allItemResponses = submitResponse.getItemResponses(); let matchedChoice = ""; // 遍历所有答题项,匹配目标单选题的用户选择 allItemResponses.forEach(item => { if (item.getItem().getTitle() === CONFIG.TARGET_QUESTION_TEXT) { matchedChoice = item.getResponse(); } }); // 无匹配配置时直接终止流程 const targetDocId = CONFIG.RESPONSE_DOC_MAP[matchedChoice]; if (!targetDocId) return; // 读取文档中的邮件正文内容 const mailContent = DocumentApp.openById(targetDocId).getBody().getText(); // 获取提交用户的邮箱地址 const userMailbox = submitResponse.getRespondentEmail(); // 发送差异化邮件 MailApp.sendEmail({ to: userMailbox, subject: `${CONFIG.MAIL_SUBJECT_PREFIX}(您的选择:${matchedChoice})`, body: mailContent }); }
触发规则配置
- 在Apps Script编辑器侧边栏进入「触发器」面板,点击「添加新触发器」
- 运行函数选择
onFormSubmit,事件源选择「从表单触发」,事件类型选择「表单提交时」 - 按照系统提示完成权限授权,确保脚本拥有读取表单响应、读取指定文档、发送邮件的全部权限
问题排查指引
- 若出现答案匹配失效,优先核对配置区的题目文本、选项值是否与表单内的实际内容完全一致,微小的文本差异都会导致匹配失败
- 若出现邮件发送失败,先检查表单是否开启了受访者邮箱收集功能,再确认授权环节是否授予了MailApp的调用权限
- 后续调整邮件正文时,直接编辑对应的Google Docs文档即可,无需修改脚本逻辑
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

