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

Google Sheets脚本问题:特定列值触发邮件逻辑失效,求修复

问题修复:Google Sheets 邮件触发逻辑错误

你的问题出在第15列和第19列的条件判断逻辑上——你用了||(逻辑或),这导致只要满足「列是15」或者「值是BIZ APPROVED」其中一个条件就会触发邮件,哪怕是其他列输入该文本也会触发,同理第19列的判断也是一样的问题。

正确的逻辑应该是同时满足目标列和指定文本,需要把||替换成&&(逻辑与)。

修正后的完整代码如下:

function sendMailEdit(e){
   var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("REVIEW");
   const rData = e.source.getActiveSheet().getRange(e.range.rowStart,1,1,24).getValues();

   let useremail = rData [0][22]

   // 这里省略你定义msg、msg2、msg3的代码

   if (e.range.columnStart == 8){
     MailApp.sendEmail({
       to: "abc@gmail.com",
       subject: "Global - New Account Access Request",
       htmlBody: msg,
       noReply: true
     });
   }
     
   else if (e.range.columnStart == 15 && e.value == "BIZ APPROVED"){
     MailApp.sendEmail({
       to: "123@gmail.com",
       subject: "Global - New Account Access Request",
       htmlBody: msg2,
       noReply: true
     });
   }
  
   else if (e.range.columnStart == 19 && e.value == "RISK APPROVED"){
     MailApp.sendEmail({
       to: useremail,
       subject: "Global - New Account Access Request",
       htmlBody: msg3,
       noReply: true
     });
   }
} 

额外补充两个实用提示:

  • 若单元格内容是通过公式生成的,e.value可能无法正确获取值,这种情况可以改用rData[0][14](第15列对应数组索引14)或rData[0][18](第19列对应数组索引18)来读取单元格实际显示值。
  • 调试时可以添加console.log(e.range.columnStart, e.value)打印触发时的列和值,方便快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:54:19