[英]How to speed up the search data in sheet
我有超过 1000000 条记录如何加快工作表中的搜索速度。 我一般搜索20s怎么提高? (工作表包括 20 列和 10000 条记录)
var ss = SpreadsheetApp.openByUrl(urldb);
var ws = ss.getSheetByName("Account");
var data = ws.getDataRange().getValues();
for(var i = 0; i < data .length; i++){
if(data [i][1] == "ID998724"){
Logger.log("found you" + data [i][1]);
}
};
return data[i][1];
ID998724
的值。如果我的理解是正确的,这 3 个示例脚本怎么样? 请将此视为几个答案之一。
在这个脚本中,我在这种情况下使用了 Class TextFinder。 这是在最近的 Google 更新中添加的。
var urldb = "###"; // Please set this.
var searchValue = "ID998724";
var ss = SpreadsheetApp.openByUrl(urldb);
var ws = ss.getSheetByName("Account");
var f = ws.createTextFinder(searchValue).findAll();
if (f.length > 0) {
for (var i = 0; i < f.length; i++) {
if (f[i].getColumn() == 2) {
Logger.log("found you" + f[i].getValue())
}
}
}
在此脚本中,从“B”列中检索值。 罗斯的评论中也提到了这一点。 而且从基准测试的结果来看,我在这种情况下使用了filter()
。
var urldb = "###"; // Please set this.
var searchValue = "ID998724";
var ss = SpreadsheetApp.openByUrl(urldb);
var ws = ss.getSheetByName("Account");
var data = ws.getRange(1, 2, ws.getLastRow(), 1).getValues();
var f = data.filter(function(e) {return e[0] == searchValue});
if (f.length > 0) {
for (var i = 0; i < f.length; i++) {
Logger.log("found you" + f[i])
}
}
在这个脚本中,我在这种情况下使用了查询语言。
var urldb = "###"; // Please set this.
var searchValue = "ID998724";
var ss = SpreadsheetApp.openByUrl(urldb);
var ws = ss.getSheetByName("Account");
var query = "select * where B='" + searchValue + "'";
var url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/gviz/tq?gid=" + ws.getSheetId() + "&tqx=out:csv&tq=" + encodeURIComponent(query);
var options = {headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}};
var csv = UrlFetchApp.fetch(url, options);
var f = Utilities.parseCsv(csv);
if (f.length > 0) {
for (var i = 0; i < f.length; i++) {
Logger.log("found you" + f[i][1])
}
}
return data[i][1]
处发生错误。 因为i
与data.length
相同。 例如,如果您想通过return data[i][1]
检索值,请将break
放在Logger.log("found you" + data [i][1])
。如果我误解了您的问题并且这些示例脚本不是您想要的结果,我深表歉意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.