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

Google表单提交后触发Google Sheets发送缺勤信息邮件的问题求助

解决Google表单提交后自动发送缺勤通知邮件的问题

原代码的核心问题

  1. 触发类型错误:你用的是单元格编辑触发的函数(sendMailEdit),但表单提交是独立的事件类型,编辑触发的逻辑完全不匹配表单提交场景,导致触发条件永远不满足。
  2. 无效的判断逻辑:原代码里的if (e.range.columnStart !=5 || e.value != "Shipped")是针对订单发货场景的判断,和你的缺勤追踪需求完全无关,直接导致函数提前返回,不会执行发送邮件的逻辑。
  3. 数据获取方式复杂且易出错:原代码通过getRange读取单元格,不如直接用表单提交事件自带的e.values数组获取数据更可靠。

修正后的代码

根据你的需求,以下是适配缺勤追踪场景的代码:

function sendAbsenceNotification(e) {
  // 表单提交的所有数据,顺序和你Google表单的字段顺序完全一致(数组索引从0开始)
  const formData = e.values;

  // 按表单字段顺序提取对应信息,根据你的实际表单顺序调整索引!
  const dateTime = formData[0];    // 第1个表单字段:日期/时间
  const employeeName = formData[1];// 第2个表单字段:员工姓名
  const employeeId = formData[2];  // 第3个表单字段:工号
  const team = formData[3];        // 第4个表单字段:团队
  const managerEmail = formData[4];// 第5个表单字段:经理邮箱
  const contactPhone = formData[5];// 第6个表单字段:联系电话

  // 构建邮件主题和内容
  const emailSubject = `员工缺勤通知:${employeeName}`;
  const emailBody = `您好,

您的团队成员 ${employeeName}(工号:${employeeId})已于 ${dateTime} 提交缺勤申请,请及时跟进。

需回电联系:${contactPhone}
所属团队:${team}`;

  // 发送邮件给经理
  MailApp.sendEmail(managerEmail, emailSubject, emailBody);
}

正确设置触发器

  1. 打开你的Google Sheets,点击顶部菜单栏「扩展程序」→「Apps脚本」。
  2. 删除原代码,粘贴上面的修正代码,点击「保存」(给项目起个名字,比如「缺勤通知脚本」)。
  3. 点击左侧菜单栏的「触发器」图标(时钟形状)。
  4. 点击「添加触发器」,按以下配置设置:
    • 选择要运行的函数:sendAbsenceNotification
    • 选择事件源:从表单提交
    • 选择事件类型:表单提交
    • 其余保持默认,点击「保存」。
  5. 首次保存会要求授权,点击「允许」,如果提示不安全,选择「高级」→「转到[你的项目名]」继续授权。

关键注意事项

  • 表单字段顺序必须匹配:代码里的formData[索引]对应你Google表单里的字段顺序,比如如果经理邮箱是表单的第6个字段,那索引要改成5(数组从0开始计数)。
  • 测试验证:提交一条测试表单数据,检查经理邮箱是否收到邮件;如果没收到,查看脚本编辑器的「执行记录」(左侧菜单栏),排查报错信息。
  • 权限问题:确保脚本获得了发送邮件的权限,授权时不要拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:52:49