[英]Google Script Email loop
我對編程還比較陌生,最近正在研究一種腳本,當某個列中的單元格發生更改時,該腳本可以從Google電子表格發送電子郵件。 收件人是根據更改所在的同一行中另一列中的電子郵件地址分配的。 我很難讓我的代碼在發送第一封電子郵件后停止運行。 實際上,腳本會無限期運行(至少直到我當天的電子郵件用完為止)。
這是代碼:
function sendNotification() {
var sheet = SpreadsheetApp.getActiveSheet();
//Get Active cell
var mycell = sheet.getActiveSelection();
var cellcol = mycell.getColumn();
var cellrow = mycell.getRow();
var address = sheet.getRange("C" + cellrow).getValue();
var streetAddress = sheet.getRange("F" + cellrow).getValue();
var startRow = 2;
var numRows = 2000;
// Fetch the range of cells A2:O2000
var dataRange = sheet.getRange(startRow, 1, numRows, 15)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = address; // First column
var message = streetAddress +" Has been Submitted for permitting!"; // Second column
var subject = "The above Address has been Submitted For Permitting! We will Follow up with you when it has been approved.";
//Check to see if column is H to trigger
if (cellcol == 8 && sheet.getName() == "Sheet1" && mycell !== "")
{
//Send the Email
MailApp.sendEmail(emailAddress, message, subject);
}
//End sendNotification
}
}
我該怎么解決? 循環是最好的選擇嗎? 我將如何實施呢?
這種方法怎么樣?
var EMAIL_SENT =“ EMAIL_SENT”;
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var mycell = e.range;
var cellcol = mycell.getColumn();
var cellrow = mycell.getRow();
var emailAddress = sheet.getRange("C" + cellrow).getValue();
var streetAddress = sheet.getRange("F" + cellrow).getValue();
var subject = "The above Address has been Submitted For Permitting! We will follow up with you when it has been approved."
// Fetch values for each row in the Range
var message = streetAddress +" Has been Submitted for permitting!";
var emailSent = sheet.getRange("O" + cellrow).getValue();
if ( cellcol == 8 && sheet.getName() == "Sheet1" && emailSent != EMAIL_SENT) { // Prevents sending duplicates
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(cellrow, 15).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
如果使用onEdit()
,則每次您編輯單元格時都會觸發該函數。 這是你想要的嗎? 我以為您正在尋找的腳本是:
在這種情況下,第一種方法更好,即sendNotification()
。 另外,必須有一個循環才能讀取所有行。 IF語句應該類似於if (row[8] != "")
然后發送電子郵件。
在這種情況下row
,其被定義為row = data[i]
在第一個腳本將具有行中的所有單元格的值被讀出在環路。 因此, row[8]
將具有要檢查其是否為空的第8個值(H列),因此為if(row[8] != "")
。
另外,如果我正確理解,循環中的電子郵件地址應為emailAddress = row[1]
,因為每行的電子郵件地址都不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.