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

标签 google-apps-script google-sheets

使用 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/

相关文章:

javascript - Google Apps 脚本相当于 PHP 的 hash_hmac() 并具有原始二进制输出?

javascript - 更高效的 'remove duplicates' 函数

google-sheets - Google表格:多个表格上的公式

regex - 删除 Google 表格中最后 "/"之后的所有内容

ios - 获取谷歌电子表格 ios

javascript - 简单的clearContent应用程序脚本出现问题

google-apps-script - 使用 Google Apps 脚本从 Google 表格数据表复制到 Google 文档表

javascript - 用于将行从一张纸移动到另一张纸的 Google 脚本的实现

google-apps-script - 在模板和服务器端脚本 (gs) 之间传递值

google-sheets - 谷歌电子表格查询函数到我可以在数组公式中使用的东西