概述:
- 每次在列 (CJ) 中列出关键字“完成”时,我都会尝试发送电子邮件通知消息。
- 不确定我是否有正确的方法,但validate_complete函数会检查该值是否在 CJ 列中列出,如果存在,它会用文本“发送电子邮件”填充 CK 列(在同一行) 。
- “发送电子邮件”文本启动Send_notification功能,并将电子邮件发送到指定的电子邮件地址。
- 我还创建了一个触发器,每次在列(CK)中列出“发送电子邮件”时,该触发器都会启动validate_complete函数。
当前问题:
执行触发器时,它会运行几分钟,要么超时,要么一次发送多封电子邮件。当列 (CK) 中指定行列出文本“发送电子邮件”时,只需发送一封电子邮件,然后清除“发送电子邮件”文本,这样如果另一行也包含“发送电子邮件”文本,就不会发送多封电子邮件。
非常感谢进一步的指导。谢谢
function validate_complete(){
const ss = SpreadsheetApp.getActive();
const sh_01 = ss.getSheetByName('Index');
const data = sh_01.getRange('CI2:CK'+sh_01.getLastRow()).getValues();
var columnNumberToWatch = 88; // column A = 1, B = 2, etc.
var valueToWatch = 'Complete';
data.forEach(r=>{
var range = sh_01.getActiveCell();
if (range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
range.offset(0, 1).setValue('Send Email');
}
});
sendnotificationEmail();
}
function sendnotificationEmail() {
const ss = SpreadsheetApp.getActive();
const sh_02 = ss.getSheetByName('Index');
const date_range = sh_02.getRange('BW2').getValues();
const data_02 = sh_02.getRange('CI2:CK'+sh_02.getLastRow()).getValues();
var recipient = "[email protected],[email protected]";
data_02.forEach(r=>{
let overdueValue = r[2];
if (overdueValue === "Send Email"){
let name = r[0];
let message = ' Test: ' + name ;
let subject = 'Test: '+ name + ', ' + date_range + ' Inspections are available' ;
MailApp.sendEmail(recipient, subject, message);
}
var range_02 = sh_02.getRange('CK2:CK100');
range_02.clear();
});
}