首页 > 解决方案 > Google Sheets 脚本优化 - 避免最长执行时间

问题描述

我正在运行一个脚本来删除 Google 表格中包含文本字符串的行。我的目标电子表格有 50k 行,我正在运行最大执行时间限制(每天 1 小时,每次运行 6 分钟)。我相信我的脚本可能很臃肿,我不知道如何优化它。

注意:我不是此代码的作者。

 function deleteRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('All Marketplaces Removed');
var r = s.getRange('B:B');
var v = r.getValues();
for(var i=v.length-1;i>=1;i--)
if(v[i][0].includes("amazon")) {
s.deleteRow(i+1);
}
};

标签: javascriptgoogle-sheets

解决方案


工作表操作比 javascript 慢得多,尤其是在大循环中。在这里看到一个类似的问题。

尝试这个:

function deleteRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('All Marketplaces Removed');
  var val = s.getDataRange().getValues();
  var lr = s.getLastRow();
  var lc = s.getLastColumn();
  var res = [];
  for (var i = 0; i < lr; i++){
    var v = val[i][1];
    if (v != 'amazon'){
      res.push(val[i]);
    }
  }
  s.getDataRange().clearContent();
  s.getRange(1, 1, res.length, lc).setValues(res);
};

推荐阅读