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

Google Sheets两步审批流程自动邮件触发问题求助

解决Google Sheets自动修改状态时无法触发邮件通知的问题

问题核心

现有两步审批表单,要求审批人1、审批人2均通过,且状态变更为approved时向IT部门发邮件。原代码依赖onEdit函数触发,但当状态通过程序自动变更为approved时,onEdit无法激活——因为它是Google Apps Script的简单触发器,仅响应用户手动编辑单元格的操作。

可行解决方案

方案1:改用可安装onChange触发器

onChange触发器能响应程序修改、手动编辑等多种表格变更操作,配置步骤如下:

  1. 打开Google Sheets的脚本编辑器(路径:工具 > 脚本编辑器)
  2. 替换原onEdit逻辑为以下代码(需根据你的表格列索引调整):
function handleApprovalEmail(e) {
  const range = e.range;
  const row = range.getRow();
  const sheet = range.getSheet();
  
  // 示例:状态列=C列(第3列),审批人1=D列(第4列),审批人2=E列(第5列)
  const currentStatus = sheet.getRange(row, 3).getValue();
  const approver1Status = sheet.getRange(row, 4).getValue();
  const approver2Status = sheet.getRange(row, 5).getValue();
  
  // 校验:状态为approved,且两位审批人均通过
  if (currentStatus === "approved" && approver1Status === "approved" && approver2Status === "approved") {
    // 发送邮件
    const recipient = "it-department@yourdomain.com";
    const subject = `审批完成:第${row}行申请已通过`;
    const body = `申请行号:${row}\n状态已更新为approved,两位审批人均完成审批,请IT部门跟进处理。`;
    
    MailApp.sendEmail(recipient, subject, body);
  }
}
  1. 创建可安装触发器:
    • 点击脚本编辑器左侧的「触发器」图标(闹钟样式)
    • 点击「添加触发器」
    • 配置项:
      • 选择函数:handleApprovalEmail
      • 事件源:「从电子表格」
      • 事件类型:「更改」
    • 保存并完成权限授权

方案2:在修改状态的代码中直接调用邮件函数

如果状态是通过你的其他脚本自动修改的,最直接的方式是在状态更新后,主动校验审批条件并调用发邮件逻辑:

function autoUpdateStatus(row) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("审批表");
  // 将指定行状态设为approved
  sheet.getRange(row, 3).setValue("approved");
  
  // 校验两位审批人是否都通过
  const approver1 = sheet.getRange(row, 4).getValue();
  const approver2 = sheet.getRange(row, 5).getValue();
  
  if (approver1 === "approved" && approver2 === "approved") {
    sendITApprovalEmail(row);
  }
}

function sendITApprovalEmail(row) {
  const recipient = "it-department@yourdomain.com";
  const subject = `审批完成:第${row}行申请已通过`;
  const body = `申请行号:${row}\n状态已更新为approved,两位审批人均完成审批,请IT部门跟进处理。`;
  
  MailApp.sendEmail(recipient, subject, body);
}

注意事项

  • 可安装触发器需要授权,首次运行时需按提示授予脚本访问表格和邮件的权限
  • 务必根据你的实际表格结构,调整代码中列的索引(示例用3、4、5列,需对应你的状态列、审批人列位置)
  • 使用onChange时,要确保函数内的条件判断足够严谨,避免因其他表格变更触发不必要的邮件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:27:18