在应用程序脚本中将数组值分配给变量时出错

时间:2018-09-21 10:59:35

标签: javascript google-apps-script

我已捕获数组中的数据范围。将数组的第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;

  }
}  

1 个答案:

答案 0 :(得分:1)

您要在for循环中从i = 0迭代到数组的长度(例如L)。在最后2次迭代中,(i+2)的值为LL+1。绝对不会有等于数组长度或更大的索引。 由于L和L + 1索引不存在,因此data[i+2]的值将为undefined,从而得到错误。

  

“Çannot从未定义中读取属性3”。