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

Google Sheets脚本需求:AP列单元格变为YES时触发邮件并获取同行数据

解决Google Sheets中AP列任意单元格变更为YES时发送邮件并获取对应行产品名的问题

我明白你现在需要把原来仅针对AP4单元格的邮件触发逻辑,扩展到整个AP列,同时还要把对应行的B列产品名称嵌入到邮件正文中。下面是修改后的完整代码,以及关键逻辑的解释:

function sendNotification(e) {
  // 判断变更的单元格是否在AP列(AP是第42列,A=1,以此类推)
  if (e.range.getColumn() === 42) {
    // 确认单元格的值被修改为"YES"
    if (e.value === "YES") {
      // 获取当前变更所在的行号
      const row = e.range.getRow();
      // 获取对应行B列的产品名称(B列是第2列)
      const productName = e.source.getActiveSheet().getRange(row, 2).getValue();
      
      // 定义邮件详情
      const recipients = "***********@gmail.com";
      const sheetName = e.range.getSheet().getName();
      const subject = `Update: ${sheetName}`;
      const body = `Column AP has been changed to 'Yes' for ${productName}`;
      
      // 发送邮件
      MailApp.sendEmail(recipients, subject, body);
    }
  }
}

关键修改点说明:

  • 列判断逻辑:把原来固定判断"AP4" == e.range.getA1Notation()改成了判断列索引e.range.getColumn() === 42,这样AP列的任意单元格变更都会触发检查(如果记不清列索引,也可以用e.range.getA1Notation().startsWith("AP")来判断,不过用列索引的执行效率更高)。
  • 获取产品名称:通过e.range.getRow()拿到变更单元格的行号,再用getRange(row, 2)定位到对应行的B列单元格,最后通过getValue()获取产品名称值。
  • 邮件正文优化:把产品名称变量直接嵌入到正文中,让邮件内容更直观有用。

额外注意事项:

  1. 确保你已经给这个函数设置了on edit类型的触发器(在Google Apps Script编辑器的「编辑」→「当前项目的触发器」中添加,选择事件源为「电子表格」,事件类型为「编辑时」)。
  2. 第一次运行脚本时需要授权,允许脚本访问你的邮件服务和电子表格数据。
  3. 如果B列可能存在空值,可以在代码里加个判断逻辑,避免邮件正文出现空白的产品名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:11:57