2017-05-07 120 views
0

當我試圖通過雙重索引訪問嵌套數組時,Google Apps腳本引發錯誤:TypeError:無法從undefined讀取屬性「3」。 (第27行,文件 「代碼」)按索引訪問嵌套數組時Google Apps腳本出錯

下面是代碼:

var ss = SpreadsheetApp.openById("SpreadsheetID"); 
var sheetMAT = ss.getSheetByName("Sheet3"); 
var data = sheetMAT.getRange(3, 2, sheetMAT.getLastRow() - 1, 4).getValues(); 
var temporaryData = []; 
var dataReadyLine = []; 

function getReadyLine() { 
    var rawData = sheetMAT.getRange(3, 2, sheetMAT.getLastRow() - 1, 4).getValues(); 
    Logger.log(rawData[0][3]); 
    for (var i=0; i<=rawData.length; i++) { 
    if (rawData[i][3] === "A Ready Line") { 
     temporaryData.push(data[i][1], data[i][0]); 
     dataReadyLine.push(temporaryData); 
     temporaryData = []; 
    } 
    } 
    return dataReadyLine; 
}; 

線 'Logger.log(RAWDATA [0] [3]);'成功打印嵌套數組項的值,但是當涉及到IF條件時,它會給出未定義的錯誤。爲什麼會發生這個錯誤?我如何使FOR循環工作?

這裏是打印屏幕的錯誤,當我嘗試運行代碼: Print Screen

+1

如何將(var i = 0; i <= rawData.length; i ++){「 {''或''for(var i = 0; i Tanaike

+0

由於Tanaike指出修改你的for循環,你可以找到更詳細的答案[這裏](http://stackoverflow.com/a/42036327/7465829) –

+0

謝謝Tanaike,它的工作。我如何將你的回答標記爲這個問題的解決方案?它不顯示按鈕。 – Din

回答

0

怎麼樣以下修正爲for循環。

來源:

for (var i=0; i<=rawData.length; i++) { 

要:

for (var i=0; i<=rawData.length - 1; i++) { 

for (var i=0; i<rawData.length; i++) { 

Array指數爲0Array.length - 1。因此for (var i=0; i<=rawData.length; i++) {在rawData.length處發生錯誤。

作爲另一種表達方式,你可以使用

for (var i in rawData) { 

在這種情況下,您還可以通過rawData[i][3]檢索元素。

相關問題