2014-01-11 70 views
0

我正在爲谷歌電子表格編寫一個腳本,用於檢查特定單元格的值是否爲「是」。如果是這樣,它應該結束。如果沒有,它應該發送一個包含其他幾個單元格的電子郵件到一個指定的地址,並寫入「Yes」給指定的單元格。然而,代碼中的if條件似乎總是評估爲真,即使它應該評估爲false。腳本向指定的單元格寫入「是」併發送電子郵件。但是,儘管電子郵件包含指定單元格的內容,但它全部無序。這裏的腳本:爲單元格值賦值失敗

function sendNotification() { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var dataRange = sheet.getRange(2,1,1,6); 
    var data = dataRange.getValues(); 
    var dateSubmitted = data[0]; 
    var dateDue = data[1]; 
    var url = data[2]; 
    var currentText = data[3]; 
    var newText = data[4]; 
    var emailSent = data[5]; 
    var test = 'Yes'; 
    var emailAddress = '[email protected]'; 
    var message = 'On ' + dateSubmitted + ' a colleague requested that ' + url + ' be changed to replace the text ' + currentText + ' with ' + newText + '. This change should be completed by ' + dateDue; 
    var subject = 'A website change has been requested'; 

    if (emailSent!=test) { // Prevents sending duplicates 
     MailApp.sendEmail(emailAddress, subject, message); 
     sheet.getRange(2,6).setValue(test); 
     // Make sure the cell is updated right away in case the script is interrupted 
     SpreadsheetApp.flush(); 
    } 
} 

相關的細胞(對不起,試圖屏幕截圖,代表太低):

A2:14年1月11日 B2:14年1月17日 C2: www.google.com D2:Lorem存有 E2:悲坐阿米特 F2:是

這裏就是它轉儲到郵件正文:

於星期六2014年1月11日00:00: 00 GMT- 0500(美國東部標準時間),星期五2014年1月17日00:00:00 GMT-0500(美國東部標準時間),www.google.com,Lorem ipsum,Dolor sit amit,是一位同事要求將undefined更改爲undefined以取代未定義的文本。這個改變應該通過undefined完成

我已經搜索了很多,並沒有找到任何行爲的解釋。我不認爲這是腳本無法讀取單元格區域的值,因爲電子郵件正文包含這些值(不在我期待的位置)。然後,再次,在我期待這些值的地方,它會下降「未定義」。

+0

我想通了。該數組已正確創建,但我未能解釋數據[#]看起來連續的事實。因此,我的代碼將讀入數組的所有行都轉儲到dateSubmitted中,而其他變量沒有被分配任何東西。解決方法是將變量賦值更改爲be = data [0] [#],以便每個人獲得一個特定單元的數據值。 [本頁](https://developers.google.com/apps-script/reference/spreadsheet/range?hl=en#getValues())讓我很直觀。 – hwestgate

回答

0

切記getValues()返回值的二維數組。

嘗試:

... 
var dateSubmitted = data[0][0]; 
var dateDue = data[0][1]; 
var url = data[0][2]; 
...