google-apps-script - 谷歌脚本超时

标签 google-apps-script google-sheets

我每天运行两次以下代码来清理一些从 API 导入的数据。我只需要它来删除重复的行,因为数据有时是重复的并且非常长。一个大问题是,它将在一年内每天收集 4 列数据,超过 2300 行,因此将达到大约 840,000 行,并且在某个时候接近 400 万个单元格。仅仅大约一周的数据就已经超时了。我最初将其作为主代码的一部分(正如您在示例表中看到的那样),但现在我已将其移至客户表中自己的函数中。尽管如此,它运行的时间还是太长了(上次执行时间为 316 秒,非常接近超时)。关于如何加快速度有什么建议吗? 这是代码:

function removeDupes(){
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Imported Data');
  var dataSheet = ss.getSheetByName('Trimmed Data');
  var data = dataSheet.getDataRange().getValues();
  var newData = [];
  for (var i in data) {
    var row = data[i];
    var duplicate = false;
    for (var j in newData) {
      if (row.join() == newData[j].join()) {
        duplicate = true;
      }
    }
    if (!duplicate) {
      newData.push(row);
    }
  }
  dataSheet.clearContents();
  dataSheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
  dataSheet.hideSheet();
}

这是我的工作表副本(其中代码是“callAPI”函数的一部分):https://docs.google.com/spreadsheets/d/1lyFa8goXC5zy_iY2U04E6bXbQz2aLSFd0z9b87l_gO4/edit?usp=sharing

我已经搜索了一段时间,以找到更快的重复可移动代码示例,但这一个是我发现的最好的,但仍然不够快。

谢谢!

最佳答案

我相信您的目标如下。

  • 您想要通过使用 Google Apps 脚本检查“A”和“B”列来删除重复的行。
  • 您希望降低脚本的处理成本。

为了达到你的目的,在这个答案中,我想建议使用removeDuplicates的方法。当这反射(reflect)到您的脚本中时,它会变成如下所示。

修改后的脚本:

function removeDupes() {
  SpreadsheetApp
    .getActive()
    .getSheetByName('Trimmed Data')
    .getDataRange()
    .removeDuplicates([1, 2]);
}

引用:

关于google-apps-script - 谷歌脚本超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64777655/

相关文章:

google-sheets - 尝试在 Google 工作表上使用 QUERY 函数时总是出现公式解析错误

javascript - Utilities.formatString() 新 Apps 脚本方法,未按预期工作

google-apps-script - 如何为我的所有 Google 电子表格提供一组脚本?

javascript - 正则表达式替换不替换(谷歌应用程序脚本)

javascript - 在 Javascript 中使用 if 语句来确定 google 电子表格中的单元格是否包含内容

if-statement - Google Sheets ArrayFormula 用于比较多个不同行中的多个单元格

javascript - 如何获取 Google 表格中超过 100 个用户名的 Twitter 关注者数量?

javascript - 如何在Apps脚本中获取特定数组元素的索引

validation - 在 Google 电子表格中复制/粘贴数据验证

google-apps-script - 如何将格式化文本转换为 Google-apps-script 中的 html 标签?