You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 17:06:08