【问题标题】:Error while assigning array value to variable in apps script将数组值分配给应用程序脚本中的变量时出错
【发布时间】:2018-09-21 20:16:49
【问题描述】:

我在一个数组中捕获了一个数据范围。我的数组的第 3 列保持不变,只有我的行需要增加,同时将此值分配给变量 matchindex。在将值分配给变量时,我收到 error 说明

'Çannot read property 3 from undefined'。

我在分配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;

  }
}  

【问题讨论】:

  • 所以基本上数组中不存在该值。你检查你的阵列了吗?
  • yes..Array 显示我检查时的值。我想做的是根据 col B 值为 col A 定义命名范围。此外,我在定义命名范围时遇到错误。当我使用 logger.log 在 for 循环之外检查时,值显示正确

标签: javascript google-apps-script


【解决方案1】:

您在 for 循环中从 i=0 迭代到数组的长度(比如 L)。在最后 2 次迭代中,(i+2) 的值将是 LL+1。并且绝对不会有一个等于或大于数组长度的索引。 由于 L 和 L+1 索引不存在,data[i+2] 的值将是undefined,因此出现错误。

'Çannot read property 3 from undefined'.

【讨论】:

  • 感谢瓦卡尔。这解释了它。您有什么建议可以解决吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2011-12-14
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多