在Google脚本中获取“那些行超出范围”错误

时间:2015-07-27 08:05:48

标签: google-apps-script

我正在尝试将数据从一个Google工作表拉到另一个。但我在行“sheet2.insertRowsAfter(sheet2.getLastRow(),data.length);”中遇到了越界错误。

下面是我的google脚本。请你帮忙解决这个脚本的错误。需要做哪些更改。

function Pull() {
      var SpreadSheetKeyA = "1FYf9FO1nZh6cxoc9B9HYmwwAEWrXlxbFIRZJPXIJ4QQ";
      var SpreadSheetKeyB = "1p1H9rYW5pjL7yyyky6rFKgYU8s-2gWcwU_urelx6SaA";
      var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getSheetByName("Alerts API");
       var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getSheetByName("API Data");
      var startRow = 2;
      var data = sheet1.getRange(2,1,100,7).getValues();
      var time = new Date ().toJSON().slice(0,10);;
      for(var i = data.length - 1; i > -1; i--) {
        if(data[i].join("").length == 0) data.splice(i, 1);
      }
      for (var r = 0; r < data.length; r++) {
        data[r].unshift(time);
        }
  if(data.length > 0 ) {
    sheet2.insertRowsAfter(sheet2.getLastRow(), data.length);
    sheet2.getRange(sheet2.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
    }
    }

1 个答案:

答案 0 :(得分:1)

尝试了几种测试代码的方案。除了将引用传递给我自己的电子表格之外,我没有更改其余代码中的任何内容(我未在下面包含这些内容)。

在第一个代码中,即使我在var data = sheet1.getRange(2,1,100,7).getValues();和指定的代码行(由您更改)中将行数从10更改为12(每个工作表只有10行数据),代码也能正常工作)根本不会给我任何错误。但是,如果我清空目标电子表格(sheet2),它会抛出指定的错误。

为了解决这个问题,我按以下方式修改了代码:

if(data.length > 0 ) 
  {
    if(sheet2.getLastRow() == 0)
    {
      sheet2.insertRowsAfter(1, data.length);
      sheet2.getRange(2, 1, data.length, data[0].length).setValues(data);
    }
    else{
      sheet2.insertRowsAfter(sheet2.getLastRow(), data.length);
      sheet2.getRange(sheet2.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
    }

  }

现在一切都运作良好。希望这可以解决您的问题。