[英]Sending email when a dropdown item is selected through a Sheet script
當H列中的狀態下拉菜單設置為“已完成”時,我試圖向A列中提供的地址發送電子郵件。 這是我到目前為止的內容:
function onOpen() {
sendemail();
}
// This constant is written in column C for rows for which an email
// has been sent successfully.
var EMAIL_SENT = 'EMAIL_SENT';
var COMPLETED = 'Completed';
/**
* Sends non-duplicate emails with data from the current spreadsheet.
*/
function sendemail() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 400; // Number of rows to process
var dataRange = sheet.getRange(startRow, 1, numRows, 3); //grabbing ranges
of values to get
var data = dataRange.getValues(); //getting values
var status = sheet.getRange(startRow, 8, numRows, 1); //grabbing ranges of
//values to get
var data_status = status.getValues(); //getting values
//logic: if a field is populated and both Column C isn't populated, and
//Status is Completed, populate corresponding row in column C and send email.
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = "";
var emailSent = row[2]; // Third column
if (emailSent != EMAIL_SENT && data_status == COMPLETED) { // Prevents
sending duplicates
var subject = 'Sending emails from a Spreadsheet';
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is
interrupted
SpreadsheetApp.flush();
}
}
}
這段代碼受Google的影響很大,我能夠從H列中獲取所有信息,但我不確定自己在做什么錯。 問題是它不起作用。 如果我取出if語句的and部分,它將正常工作,並且如果我調試代碼,我可以看到H列給我的值數組。對於每個“完成”的值,我都需要它發送電子郵件,但是如果狀態設置為“已完成”並且列C的值為EMAIL_SENT,則我不希望發送該電子郵件。感謝您的幫助
我認為您的腳本幾乎已經完成。 我認為該腳本可以通過修改一部分來工作。 那么如何修改呢?
data_status
是二維數組。 並且,當將每一行的值與“ COMPLETED”進行比較時,整個數組將進行比較。 為了將以上內容反映到您的腳本中,請進行以下修改。
來自: if (emailSent != EMAIL_SENT && data_status == COMPLETED) {
至 :
if (emailSent != EMAIL_SENT && data_status[i][0] == COMPLETED) {
如果這不起作用,請告訴我。 我想修改它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.