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

基于Google表单提交内容发送条件邮件的脚本求助

解决Google表单提交触发对应州邮件发送的问题

原代码的核心问题

  1. 函数定义嵌套在if/else块中,不符合JavaScript语法规范,逻辑完全无法执行
  2. lastRow变量未定义,getvalues()拼写错误(应为getValues(),Google Apps Script对大小写敏感)
  3. else后面不能直接跟条件判断,需用else if
  4. 硬编码固定取C2单元格,应该获取最新提交行的邮箱地址,而非固定单元格
  5. 触发创建代码放在全局作用域,会导致每次运行脚本都创建新触发,引发重复执行

正确实现代码

// 表单提交触发的处理函数,参数e为表单提交事件对象(自动传入)
function onFormSubmit(e) {
  // 获取用户提交的所有数据,顺序与表单字段一致(第一个是时间戳)
  const formData = e.values;
  // 请根据你的实际表单字段顺序调整索引!索引从0开始
  // 示例:假设第2个字段是州(NY/MA),第3个字段是邮箱
  const userState = formData[1];
  const userEmail = formData[2];

  // 根据州设置邮件内容
  let emailSubject, emailContent;
  if (userState === "NY") {
    emailSubject = "你的纽约州提醒邮件";
    emailContent = "这是你的纽约州专属提醒内容!";
  } else if (userState === "MA") {
    emailSubject = "你的马萨诸塞州提醒邮件";
    emailContent = "这是你的马萨诸塞州专属提醒内容!";
  } else {
    // 处理未知州的情况(可选)
    emailSubject = "未知州提醒";
    emailContent = "无法识别你填写的州信息,请检查后重新提交。";
  }

  // 确保邮箱地址有效时发送邮件
  if (userEmail) {
    MailApp.sendEmail(userEmail, emailSubject, emailContent);
  }
}

// 运行此函数创建表单提交触发(只需执行一次)
function createSubmitTrigger() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // 检查是否已有同名触发,避免重复创建
  const existingTriggers = ScriptApp.getProjectTriggers();
  const triggerExists = existingTriggers.some(t => t.getHandlerFunction() === "onFormSubmit");
  
  if (!triggerExists) {
    ScriptApp.newTrigger("onFormSubmit")
      .forSpreadsheet(spreadsheet)
      .onFormSubmit()
      .create();
    SpreadsheetApp.getUi().alert("表单提交触发已创建成功!");
  } else {
    SpreadsheetApp.getUi().alert("触发已存在,无需重复创建!");
  }
}

关键说明

  1. 事件对象e的使用:表单提交时,Google会自动传入事件对象,e.values包含了用户提交的所有数据,顺序和你在表单中设置的字段完全一致(第一个元素是提交时间戳)。你需要根据自己的表单字段顺序调整索引,比如如果州是表单的第3个字段,就用formData[2](索引从0开始)。
  2. 触发设置方式:
    • 方法一:手动创建:打开脚本编辑器 → 点击「编辑」→「当前项目的触发器」→ 点击「添加触发器」,选择onFormSubmit函数,事件类型选「表单提交」,保存即可。
    • 方法二:运行一次createSubmitTrigger函数,它会自动创建触发并避免重复。
  3. 权限授权:第一次运行脚本时,会提示授权发送邮件的权限,按照页面指引完成授权即可。
  4. 测试验证:提交一次表单,检查对应邮箱是否收到匹配州的邮件,若未收到,检查字段索引是否正确、邮箱是否填写正确。

内容的提问来源于stack exchange,提问作者user19613981

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:48:22