按索引访问嵌套数组时Google Apps脚本出错

问题描述:

当我试图通过双重索引访问嵌套数组时,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 Tanaike

+0

由于Tanaike指出修改你的for循环,你可以找到更详细的答案[这里](http://stackoverflow.com/a/42036327/7465829) –

+0

谢谢Tanaike,它的工作。我如何将你的回答标记为这个问题的解决方案?它不显示按钮。 – Din

怎么样以下修正为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]检索元素。