sheet.appendRow()偶尔会以静默方式失败并导致空行

kaz*_*uau 5 google-sheets google-apps-script

使用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]);
  }
}
Run Code Online (Sandbox Code Playgroud)

大约5或10行,时间不同,变空.插入Utilities.sleep()似乎也无法正常工作.

有没有人有任何想法摆脱这种情况?先感谢您.

Ser*_*sas 5

您可以尝试像这样使用批量写入工作表

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);
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果您认为工作表太“短”,您也可以在循环中附加空行。

编辑:按照迈克尔的相关答案,使用以下命令添加必要的行将是一个更好的主意sheet.insertRowsAfter(sheet.getMaxRows(), target.length)