如何修改Google Apps Script实现C列输入任意内容触发邮件
修改Google Apps Script实现C列任意输入触发邮件发送
需求说明
现有Google Apps Script脚本仅在Google Sheets的C列输入"TEST"时触发邮件发送,需调整为C列任意行输入任意内容时均触发邮件,询问是否可通过通配符方式实现。
原脚本代码
function sendMailEdit(e){ if ((e.range.columnStart != 3 || e.value != "TEST")) return; const rData = e.source.getActiveSheet().getRange(e.range.rowStart,1,1,4).getValues(); let job = rData[0][1]; let req = rData[0][0]; let item = rData[0][2]; let now = new Date().toLocaleString("en-US"); var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Requestors").getRange("B2:B"); var emailAddress = emailRange.getValues(); let msg = "Job # = " + job + " \nRequestor = " + req + " \nItem Requested = " + item + " \nDate & Time Requested " + now; Logger.log(msg); GmailApp.sendEmail(emailAddress, "Raw Material Request", msg) }
修改方案
不需要使用通配符,直接调整触发条件的判断逻辑即可:
- 原逻辑
if ((e.range.columnStart != 3 || e.value != "TEST")) return;仅允许C列输入"TEST"时执行后续代码,否则直接退出。 - 修改后只需判断是否为C列,同时可选择排除空值(避免删除内容时误触发),将判断条件替换为:
if (e.range.columnStart != 3 || !e.value) return;
修改后的完整脚本
function sendMailEdit(e){ // 仅当修改的是C列且输入了有效内容时继续执行 if (e.range.columnStart != 3 || !e.value) return; const rData = e.source.getActiveSheet().getRange(e.range.rowStart,1,1,4).getValues(); let job = rData[0][1]; let req = rData[0][0]; let item = rData[0][2]; let now = new Date().toLocaleString("en-US"); var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Requestors").getRange("B2:B"); var emailAddress = emailRange.getValues(); let msg = "Job # = " + job + " \nRequestor = " + req + " \nItem Requested = " + item + " \nDate & Time Requested " + now; Logger.log(msg); GmailApp.sendEmail(emailAddress, "Raw Material Request", msg) }
补充说明
- 若需要删除C列内容时也触发邮件,可去掉空值判断,将条件简化为
if (e.range.columnStart != 3) return; e.range.columnStart != 3用于限定仅监控第3列(即C列)的修改操作
内容的提问来源于stack exchange,提问作者Jim Spalding
相关产品推荐
相关产品推荐

