我已捕获数组中的数据范围。将数组的第3列保持不变,并且在将该值分配给变量matchindex时,仅需要增加一行。在将值分配给变量时,出现了错误提示
“Çannot从未定义中读取属性3”。
我在分配matchindex = data[i+2][3]
时遇到此错误。
有人可以解释出什么问题了吗?
下面是我的脚本
function testrange() {
var spreadsheet = SpreadsheetApp.getActive();
var i=0;
var temp1 =2;
var temp2 =2;
var startrow;
var endrow;
var matchindex;
var ssVillage = spreadsheet.setActiveSheet(spreadsheet.getSheetByName('VillageName'),true);
var range = ssVillage.getDataRange();
var data = range.getValues();
var lastcol = ssVillage.getLastColumn();
for (i=0;i<data.length;i++)
{
matchindex = data[i+2][3];
temp1 = matchindex;
if(temp1 !== temp2) {
// spreadsheet.setNamedRange(ssVillage.getRange("B"+startrow).getValue(),ssVillage.getRange("A"+startrow +":A"+endrow).activate() );
spreadsheet.setNamedRange(data[i+2][startrow],ssVillage.getRange("A"+startrow +":A"+endrow).activate() );
if (i+2 == matchindex) {
startrow = (i+2);
endrow = i+2;
}
else {
endrow = i+2;
}
}
else {
if (i+2 == matchindex) {
startrow = (i+2);
endrow = i+2;
}
else {
endrow = i+2;
}
}
temp2 = matchindex;
}
}
答案 0 :(得分:1)
您要在for循环中从i = 0迭代到数组的长度(例如L)。在最后2次迭代中,(i+2)
的值为L
,L+1
。绝对不会有等于数组长度或更大的索引。
由于L和L + 1索引不存在,因此data[i+2]
的值将为undefined
,从而得到错误。
“Çannot从未定义中读取属性3”。