如何加快sheet中数据的搜索速度

2023-12-02

我有超过 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使用 Google Apps 脚本在电子表格中的“帐户”工作表上形成“B”列。

如果我的理解是正确的,那么这 3 个示例脚本怎么样?请将此视为多个答案之一。

示例脚本1:

在此脚本中,我使用了 TextFinder 类来应对这种情况。这是在谷歌最近的更新中添加的。

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())
    }
  }
}

示例脚本2:

在此脚本中,从“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])
  }
}

示例脚本 3:

在此脚本中,我针对这种情况使用了查询语言。

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])
  }
}

Note:

  • 在你的脚本中,我认为错误发生在return data[i][1]。因为idata.length。如果你想通过以下方式检索值return data[i][1],例如,请输入break after Logger.log("found you" + data [i][1]).

参考:

  • 类文本查找器
  • filter()
  • 基准测试:使用 Google Apps 脚本循环进行数组处理
  • 查询语言参考(0.7 版)

如果我误解了您的问题并且这些示例脚本不是您想要的结果,我深表歉意。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何加快sheet中数据的搜索速度 的相关文章

随机推荐