javascript - 优化谷歌应用程序脚本中的循环

标签 javascript for-loop indexing google-apps-script vlookup

我正在使用 for 循环来搜索大型工作表(大约 4500 行)。 他们中的大多数看起来像这样:

function lookup(value) {
  var tables=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Name");
  var columnvalues = tables.getRange(1, 1,tables.getLastRow()).getValues(); 
  var searchResult = columnvalues.findIndex(value); //Row Index - 1
}
 Array.prototype.findIndex = function(search){
  if(search == "") return false;
  for (var i=0; i<this.length; i++)
    if (this[i].toString().indexOf(search) > -1 ) return i;

  return -1;
}

应用脚本当前运行速度相对较慢。我正在寻找一种方法来加速我当前的代码或寻找另一种搜索方法。我一直在考虑使用谷歌电子表格查找功能(索引匹配、vLookup),但我还没有找到在应用程序脚本中访问这些功能的方法。有什么想法吗?

最佳答案

目前您找不到使用应用程序脚本更快地执行此操作的方法。您必须获取整个列并像您已经在做的那样一一搜索。

您提到的使用工作表公式的替代方案可能不太可靠,因为您可能会发现单元格公式不会在您更改值时立即更新结果。

我能看到加速的唯一情况是您需要进行多次搜索调用。在这种情况下,将搜索词作为数组传递并在单个循环中一次搜索它们会更快。

关于javascript - 优化谷歌应用程序脚本中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31789762/

相关文章:

java - 为什么我的 for 循环不传递值?

java - 为什么循环最后打印0?

java - 从变量中获取变量列表

caching - 如何实现动态索引?

mysql - MySQL模糊搜索的Big-O

javascript - 如何自动填充tinymce的内容?

Javascript Promise 无法解析 createWriteStream

javascript - 由于未知原因,控制台无法识别 clientX

javascript - 使不可聚焦元素可聚焦于跳转链接,但不使用 tabindex ="0"

mongodb - MongoDB 在使用 $exists 运算符检查字段是否存在时可以使用索引吗?