2017-10-11 44 views
0

我寫了一個代碼來自動從谷歌表發送郵件。每天如果列狀態有單元格「定時」,我想發送電子郵件。它的工作原理。但我不想發送郵件給前幾天收到郵件的人,以便我在發送郵件後創建CHECK以通過「發送」填充另一列。它失敗了。我無法使用電子郵件地址檢測該行,該程序用於相對於另一列插入「已發送」。如何檢測行並相對於下一列中的單元格?

你能幫我嗎?

function sendEmails() { 
    var she = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("basic"); 
    var startRow = 2; 
    var numRows = 1000; 
    var dataRange = she.getRange(startRow, 1, numRows, 1000) 
    var data = dataRange.getValues(); 
    var text = she.getRange("L2"); 
    var message = text.getValues(); 
    for (i in data) { 
    var col = data[i]; 
    var emailAddress = col[1];  
    var subject = "Project reminder"; 
    var status = col[3]; 
    var check = col[8]; 
    if (status == "Timing"){ 
     MailApp.sendEmail(emailAddress, subject, message) && 
check.setValue('sent');} //moment when I want to insert 'sent' 
    } 
} 

更新了部分代碼:

for(var a=0; a < values.length; a++){ 
    if(values[a][1] == "not" && values[a][3] == "Timing"){ 
    var emailAddress = values[a][0]; 
    Logger.log("NEED TO SEND AN EMAIL TO " + values[a][0]); 
    var message = messag + " " + values[a][5]; 
    MailApp.sendEmail(emailAddress, subject, message); 
    } 
    } 
} 

回答

1

這裏是爲您的使用情況下,一個小型的解決方案。只是玩它來了解它是如何工作的。 (0,0), (0,1),etc代表數組的索引號。

這裏的樣品臺 enter image description here

function checkIfSent(){ 

    var ss = SpreadsheetApp.openById("123454567890abcdefghi").getSheetByName("12345"); 

    var values = ss.getSheetValues(1, 1, 6, 2); 

    for(var i=0; i < values.length; i++){ 
    for(var j=0; j < values.length; j++){ 
     if(values[i][j] == "NOT"){ 
     Logger.log("NEED TO SEND AN EMAIL TO " + values[i][0]); 
     //Send an Email method here() 
     //. . . 
     } 
    } 
    } 
} 

如果值下列CHECK被標記爲沒有,你可以把你的方法來發送電子郵件給此人(values[i][0])。

+0

謝謝你,你的解決方案給了我這個想法。但是二維迭代不是必需的。我更新了代碼,但仍然無法使用setValue(「發送」) – aniusni

相關問題