Google Script 函数调用所有值与刚刚更改的行
GoogleScript function calling ALL values vs the row that was just changed
下面的函数调用所有标记为“已关闭”的行并发送一封电子邮件;但我希望它只通过电子邮件发送标记为“已关闭”的邮件;不是旧的,以前关闭的行,我不知道如何更正这个问题,请帮忙。
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 3;
var numRows = 5000;
var dataRange = sheet.getRange(startRow, 1, numRows, 5000);
var data = dataRange.getValues();
var FinalMessage;
for (var i in data) {
var row = data[i];
if (row.includes("Closed")){
// Logger.log("CLOSED" + row);
var emailAddress = ""
var TSRNumber = row[19];
var IssueType = row[4];
var Customer = row[5];
var TankCode = row[13];
var City = row[9];
var State = row[10];
var Region = row[0];
var Terminal = row[1];
switch (Terminal) {
case "Riga MI":
emailAddress = "xxxxxx@xxxx.com";
break;
case "Other":
default:
emailAddress = "xxxx@xxxx.com";
break;
}
var subject = "CLOSED - TSR #" + TSRNumber + " for " + Customer + " in " + City + " " + State
+ " ( " + Region + " )";
var message = "TSR # " + TSRNumber + " for " + Customer + " in " + City + " " + State + " ( "
+ Region + " ) " + "is now Closed" +'\n' +'\n' + "Link to TSR Database: " +
"https://xxxxx.com"
MailApp.sendEmail(emailAddress, "NO-REPLY@xxxxx.com", subject, message);
}
}
}
对于这种情况,您需要一个可安装的触发器:
function createTrigger() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger('sendEmail').forSpreadsheet(ss).onEdit().create();
}
此函数在手动执行时将为电子表格创建一个触发器,该触发器将在编辑单元格时触发。
然后 sendEmail 函数本身会像往常一样读取编辑的单元格、验证并填写字段:
function sendEmail(e) {
var sheet = SpreadsheetApp.getActiveSheet();
if ((e.range.getRow() >= 3) && (e.range.getValue() === "Closed")) {
var row = sheet.getRange(e.range.getRow(),1,1,20).getValues();
var emailAddress = ""
var TSRNumber = row[19];
var IssueType = row[4];
var Customer = row[5];
var TankCode = row[13];
var City = row[9];
var State = row[10];
var Region = row[0];
var Terminal = row[1];
switch (Terminal) {
case "Riga MI":
emailAddress = "xxxxxx@xxxx.com";
break;
case "Other":
default:
emailAddress = "xxxx@xxxx.com";
break;
}
var subject = "CLOSED - TSR #" + TSRNumber + " for " + Customer + " in " + City + " " + State
+ " ( " + Region + " )";
var message = "TSR # " + TSRNumber + " for " + Customer + " in " + City + " " + State + " ( "
+ Region + " ) " + "is now Closed" +'\n' +'\n' + "Link to TSR Database: " +
"https://xxxxx.com"
MailApp.sendEmail(emailAddress, "NO-REPLY@xxxxx.com", subject, message);
}
}
参考文献:
下面的函数调用所有标记为“已关闭”的行并发送一封电子邮件;但我希望它只通过电子邮件发送标记为“已关闭”的邮件;不是旧的,以前关闭的行,我不知道如何更正这个问题,请帮忙。
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 3;
var numRows = 5000;
var dataRange = sheet.getRange(startRow, 1, numRows, 5000);
var data = dataRange.getValues();
var FinalMessage;
for (var i in data) {
var row = data[i];
if (row.includes("Closed")){
// Logger.log("CLOSED" + row);
var emailAddress = ""
var TSRNumber = row[19];
var IssueType = row[4];
var Customer = row[5];
var TankCode = row[13];
var City = row[9];
var State = row[10];
var Region = row[0];
var Terminal = row[1];
switch (Terminal) {
case "Riga MI":
emailAddress = "xxxxxx@xxxx.com";
break;
case "Other":
default:
emailAddress = "xxxx@xxxx.com";
break;
}
var subject = "CLOSED - TSR #" + TSRNumber + " for " + Customer + " in " + City + " " + State
+ " ( " + Region + " )";
var message = "TSR # " + TSRNumber + " for " + Customer + " in " + City + " " + State + " ( "
+ Region + " ) " + "is now Closed" +'\n' +'\n' + "Link to TSR Database: " +
"https://xxxxx.com"
MailApp.sendEmail(emailAddress, "NO-REPLY@xxxxx.com", subject, message);
}
}
}
对于这种情况,您需要一个可安装的触发器:
function createTrigger() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger('sendEmail').forSpreadsheet(ss).onEdit().create();
}
此函数在手动执行时将为电子表格创建一个触发器,该触发器将在编辑单元格时触发。
然后 sendEmail 函数本身会像往常一样读取编辑的单元格、验证并填写字段:
function sendEmail(e) {
var sheet = SpreadsheetApp.getActiveSheet();
if ((e.range.getRow() >= 3) && (e.range.getValue() === "Closed")) {
var row = sheet.getRange(e.range.getRow(),1,1,20).getValues();
var emailAddress = ""
var TSRNumber = row[19];
var IssueType = row[4];
var Customer = row[5];
var TankCode = row[13];
var City = row[9];
var State = row[10];
var Region = row[0];
var Terminal = row[1];
switch (Terminal) {
case "Riga MI":
emailAddress = "xxxxxx@xxxx.com";
break;
case "Other":
default:
emailAddress = "xxxx@xxxx.com";
break;
}
var subject = "CLOSED - TSR #" + TSRNumber + " for " + Customer + " in " + City + " " + State
+ " ( " + Region + " )";
var message = "TSR # " + TSRNumber + " for " + Customer + " in " + City + " " + State + " ( "
+ Region + " ) " + "is now Closed" +'\n' +'\n' + "Link to TSR Database: " +
"https://xxxxx.com"
MailApp.sendEmail(emailAddress, "NO-REPLY@xxxxx.com", subject, message);
}
}
参考文献: