2016-12-29 90 views
0

我正在制作一个电子表格,它循环显示两栏中的值。一列(47)包含将在电子邮件中发送的消息,另一列(48)包含消息发送时间的时间戳。Google Spreadsheets if ==''not working

该脚本检查消息值是否为空并且时间戳为空。如果是这样,这意味着消息从未发送,然后脚本发送消息。

如果时间戳记列中有值,我希望它不发送消息。我以前曾经使用过它,过去它已经工作过,我不确定它为什么现在不工作。即使有时间戳,它仍然会发送消息。我错过了什么?下面是代码(对不起,这不是最好的编写的代码,我知道任何提示,使其更好地将不胜感激。):

function listingPending2WeekNoticeEmail() { 

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("VacancyReportMarketing"); 

    // figure out what the last row is 
    var lastRow = sheet.getLastRow(); 

    // the rows are indexed starting at 1, and the first 3 row 
    // is the headers, so start with row 4 
    var startRow = 4; 

    // grab the '2 week notice sent' column 48 (AV)) 
    var range = sheet.getRange(2,48,lastRow-startRow+1,1); 
    var numRows = range.getNumRows(); 
    var timestamp_values = range.getValues(); 

    // Now, grab the listing pending 2 week notice column 47 (AU) 
    range = sheet.getRange(4, 47, lastRow-startRow+1, 1); 
    numRows = range.getNumRows(); 
    var reminder_info_values = range.getValues(); 

    var warning_count = 0; 
    var msg = ""; 

    // Loop over the days left values 
    for (var i = 0; i <= numRows - 1; i++) { 
    var timestamp = timestamp_values[i][0]; 
    var reminder_info = reminder_info_values[i][0]; 
    // var days_left = days_left_values[i][0]; 
    if(reminder_info != '' && timestamp == '') { 
     Logger.log(timestamp); 
     // if reminder not empty but timestamp empty, do something with the data. 

     var reminder_name = reminder_info_values[i][0]; 

     msg = msg + reminder_name+"\n\n"; 
     var msg2 = "\n"+"Within the 2 weeks prior to unit being estimated ready, Marketing Department should begin advertising the above units. If assets are missing, Marketing should begin scheduling with the property manager a time to visit the property as soon as it is ready. Please begin to compile your schedule to collect missing assets and submit to Marketing Manager for approval. Thank you!" 
     warning_count++; 


    } 
    } 

    if(warning_count) { 
    MailApp.sendEmail("[email protected],[email protected]", 
         "2 WEEK NOTICE - LISTINGS PENDING", msg+msg2); 
    timestamp2WeekNoticeSent(); 

    } 

}; 

function timestamp2WeekNoticeSent(){ 

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("VacancyReportMarketing"); 
    var lastRow = sheet.getLastRow() 

    for (var i = 1; i <= lastRow; i++){ 
    // get column AU (47), every row to last row 
    var noticeRange = sheet.getRange([i], 47); 
    var noticeValues = noticeRange.getValues(); 
    // get column AV (48), every row to last row 
    var timeRange = sheet.getRange([i], 48); 
    var timeValues = timeRange.getValues(); 

    if (noticeValues != '' && timeValues == ''){ // 
     timeRange.setValue(new Date()); 

    } 
    } 
} 
+0

确定是否发送电子邮件的变量是'warning_count'。因此,从这个循环中记录Logger.log(warning_count)开始,看看它为什么会变得正确。 – FTP

回答

1

我只是意识到,我得到列48的起始范围第2行,当我的开始行应该是4.我得到的范围从第4列开始,像4我应该。由于不匹配,当我遍历这些值时,它们不会在同一行中循环。所以我只是改变了第48列的getRange值,以4开始而不是2开始,现在它正在工作。呃...