我希望在满足某些条件以发送电子邮件时使用的工作表中有5列(C2:C,E2:E,F2:F,J2:J,L2:L) 如果F2:G <= E2:E,则发送主题为“签出C2:C”的电子邮件 如果E2:E> = L2:L AND J2:J <>“”,则发送主题为“看看C2:C”的电子邮件
我做了一些搜索,发现了2个不同的实例来检查条件并发送电子邮件,但无法将2个实例放在一起使它像上面那样工作。以下是2个不同的脚本,其中一个被注释掉只是为了显示我正在使用的脚本...
这是我到目前为止所拥有的:
function Alert() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Display");
var ERange = sheet.getRange("E2:E").getValues();
var FRange = sheet.getRange("F2:F").getValues();
var results = [];
for(var i=0;i>ERange.length;i++){
if(ERange[i]<=FRange[i]){
results.push("this line met conditions3 "+(i+2)); // +2 because the loop start at zero and first line is the second one (E2)
}
}
MailApp.sendEmail('xx@yy.com', 'subject', results.join("\n"));
};
//function AlertEmails() {
// var ss = SpreadsheetApp.getActiveSpreadsheet();
// ss.setActiveSheet(ss.getSheetByName("EmailDetails"));
// var sheet = SpreadsheetApp.getActiveSheet();
// var dataRange = sheet.getRange("A2:C3");
// var data = dataRange.getValues();
// for (i in data) {
// var rowData = data[i];
// var emailAddress = rowData[1];
// var recipient = rowData[0];
// var message1 = rowData[2];
// var message = 'Dear ' + recipient + ',\n\n' + message1;
// var subject = 'googleSheets test automated script!';
// GmailApp.sendEmail(emailAddress, subject, message);
// }
//}
谢谢大家!
答案 0 :(得分:1)
我会这样写:
function Alert() {
var ss=SpreadsheetApp.getActive();
var sheet=ss.getSheetByName("Display");
var Evalues=sheet.getRange(2,5,sheet.getLastRow()-1,1).getValues();
此范围格式不太容易出错。使用E2:E,您经常在数据底部和最大行之间得到空值。
var Fvalues=sheet.getRange(2,6,sheet.getLastRow()-1,1).getValues();
var results=[];
在下面的行中您有i> Evalues.length,这不是真的,所以 立即终止。
for(var i=0;i<Evalues.length;i++){
您和我都忽略了列索引。我只是将它们添加到下面的行中:
if(Evalues[i][0]<=Fvalues[i][0]){
results.push("This line met conditions3 "+(i+2));
}
}
MailApp.sendEmail('xx@yy.com', 'subject',results.join("\n"));
}