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
相关产品推荐
相关产品推荐

