我正在尝试将数据从一个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);
}
}
答案 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);
}
}
现在一切都运作良好。希望这可以解决您的问题。