使用 google-spreadsheet 中的 google-apps-script,我尝试使用 fetchUrl 获取数百行数据,并使用 sheet.appendRow 将它们粘贴到我的工作表中。
获取数据并拆分为数组是可以的。但是将它们逐行附加到工作表中偶尔会失败而没有任何错误并导致空行。
这是重现问题的非常简单的示例。
function appendTest() {
var sSheet = SpreadsheetApp.getActiveSpreadsheet();
sheet = SpreadsheetApp.setActiveSheet(sSheet.getSheets()[2]);
for (var i = 0; i <= 100; i++) {
sheet.appendRow([i, 1, 2, 3, 4, 5]);
}
}
大约 5 或 10 行,不时不同,变成空的。
插入 Utilities.sleep() 似乎也不起作用。
有没有人有任何想法摆脱这种情况?
先感谢您。
最佳答案
您可以尝试像这样使用批量写入工作表
function appendTest() {
var target = new Array()
var sSheet = SpreadsheetApp.getActiveSpreadsheet();
sheet = SpreadsheetApp.setActiveSheet(sSheet.getSheets()[2]);
for (var i = 0; i <= 100; i++) {
target.push(['some data','in some columns','bla bla']);
}
sheet.getRange(sSheet.getLastRow()+1,1,target.length,target[0].length).setValues(target);
}
请注意,如果您认为工作表太“短”,您也可以在循环中附加空行。
编辑:按照迈克尔的相关回答,使用
sheet.insertRowsAfter(sheet.getMaxRows(), target.length)
添加必要的行会是一个更好的主意。
关于google-apps-script - sheet.appendRow() 偶尔会以静默方式失败并导致空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13510797/