.getValues()中的未定义属性

时间:2016-01-07 17:16:21

标签: google-apps-script

这是我尝试运行的代码:

function Validation () {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetPlanif = ss.getSheetByName('Planification');
  var sheetTdB = ss.getSheetByName('TdB');
  var sheetLiv = ss.getSheetByName('Livraisons');
  var planifIndex = sheetPlanif.getLastRow();                                               

  var columnIndex = sheetLiv.getLastColumn();

  for (var j=2; j<=rowIndex; j++) {
    var codeD = sheetLiv.getRange(j,1).getValue();
      if (codeD == "") {
        sheetLiv.deleteRow(j);
      };
  };

  var day1length = sheetPlanif.getRange(3,1,planifIndex,1).getValues();
  Logger.log(day1length[0][0]);
  for (var k=0; k<=planifIndex; k++) {
    if (day1length[k][0] != "") {
      var rowIndex = sheetLiv.getLastRow();
      sheetPlanif.getRange(k+3,1,1,6).copyValuesToRange(sheetLiv, 1, 6, rowIndex, rowIndex);
    };
  };
  sheetPlanif.clear().hideSheet();
  sheetLiv.getRange(2,1,rowIndex-1,22).sort(3);
}

当我这样做时,我一直有同样的错误:“由于day1length [k] [0],”无法从undefined“运行读取属性”0“。但是,当我打印任何day1length值时,我得到一个合适的值。

你知道为什么我不能运行循环吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您的for循环正在循环行长度的迭代次数:

var planifIndex = sheetPlanif.getLastRow();
for (var k=0; k<=planifIndex; k++) {

更改此行:

for (var k=0; k<=planifIndex; k++) {

要:

for (var k=0; k<=day1length.length; k++) {

想象一下,如果您的电子表格中有10行,planifIndex将为10.因此,您的for循环将循环10次(k从零开始并转到9)。

但是您获得的数据行数仅为7:

var day1length = sheetPlanif.getRange(3,1,planifIndex,1).getValues();

从第3行开始,到10 - 长度为7.因此,当您的for循环计数为8时,没有剩余数据,您将收到错误