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

求助:实现项目提案审批时的自动邮件回复(无需手动指定邮箱)

解决Google Sheets自动邮件回复(无需手动指定邮箱)的优化方案

你的代码已经实现了从表格第6列自动获取学生邮箱的核心逻辑,这里针对功能健壮性、场景完整性做优化,同时解决潜在的触发问题:

优化后的完整代码

function onEdit(e) {
  // 指定目标工作表名称,避免切换其他表时误触发
  const targetSheet = "项目提案跟踪表";
  const sheet = e.source.getSheetByName(targetSheet);
  if (!sheet) return;

  // 定义表格列对应关系(根据你的实际结构调整)
  const statusCol = 7;       // 状态列(第7列,对应G列)
  const studentEmailCol = 6; // 学生邮箱列(第6列,对应F列)
  const profNameCol = 8;     // 教授姓名列(第8列,对应H列)
  const sentFlagCol = 9;     // 已发送标记列(第9列,对应I列)
  const headerRow = 1;       // 表头行号

  // 过滤无效触发:表头行、非状态列修改、已发送过邮件的行
  const row = e.range.getRow();
  if (row <= headerRow || e.range.getColumn() !== statusCol || sheet.getRange(row, sentFlagCol).getValue() === "已发送") {
    return;
  }

  const newStatus = e.value; // 直接从事件对象取修改后的值,避免并发错误
  const studentEmail = sheet.getRange(row, studentEmailCol).getValue();
  const profName = sheet.getRange(row, profNameCol).getValue() || "负责教授";

  // 生成对应状态的邮件内容
  let subject, body;
  if (newStatus === "Accepted") {
    subject = "你的毕业设计提案状态更新";
    body = `你的项目提案已被${profName}接受,请后续跟进相关流程。`;
  } else if (newStatus === "Rejected") {
    subject = "你的毕业设计提案状态更新";
    body = `你的项目提案已被${profName}拒绝,建议查看表格内的反馈说明或直接联系教授沟通。`;
  } else {
    return; // 非指定状态,不处理
  }

  // 验证邮箱格式后发送,并标记已发送
  if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(studentEmail)) {
    MailApp.sendEmail(studentEmail, subject, body);
    sheet.getRange(row, sentFlagCol).setValue("已发送");
  } else {
    sheet.getRange(row, sentFlagCol).setValue("邮箱格式错误");
  }
}

关键优化说明

  • 避免误触发:通过指定工作表名称、过滤表头行、新增已发送标记,解决切换工作表、修改表头、重复编辑同一单元格导致的重复发送问题。
  • 动态信息获取:从表格指定列读取教授姓名,替代硬编码的"Ms. x",适配不同教授的操作场景;如果想直接用当前编辑教授的账号名称,可替换profName的取值为Session.getActiveUser().getDisplayName()(首次运行需授权)。
  • 事件对象可靠取值:用e.value代替getActiveCell().getValue(),避免用户编辑过程中切换单元格导致的取值错误。
  • 错误防护:新增邮箱格式校验,发送失败时在表格标记提示,便于后续排查。

配置调整提示

根据你的实际表格结构,修改代码开头的常量值即可,比如调整各列的列号、工作表名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:57:40