我正在使用 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/