gpt4 book ai didi

google-apps-script - 使用 TextFinder 搜索范围比搜索整个工作表慢

转载 作者:行者123 更新时间:2023-12-04 01:43:15 36 4
gpt4 key购买 nike

我有一张有很多行的工作表 - 数千行。我想在特定的列中搜索文本。我正在使用 Range.createTextFinder但它超时了。如果工作表只有 4 行数据,它甚至会超时。

// This is very slow
var found = sheet.getRange("A:A").createTextFinder("dog").matchCase(false).findNext();

如果我搜索整个工作表,它会很快,但我只想检查特定的列。
// This works faster but it searches the entire sheet
var found = sheet.createTextFinder("dog").matchCase(false).findNext();

有没有更快的方法来查找在特定列中包含字符串的第一行?

更新 :这是执行记录:
[19-06-09 14:16:48:430 EDT] Starting execution
[19-06-09 14:16:48:513 EDT] SpreadsheetApp.openById([redacted]) [0.071 seconds]
[19-06-09 14:16:48:513 EDT] Spreadsheet.getSheetByName([Sheet2]) [0 seconds]
[19-06-09 14:16:48:514 EDT] Sheet.createTextFinder([b]) [0 seconds]
[19-06-09 14:16:48:514 EDT] TextFinder.matchCase([false]) [0 seconds]
[19-06-09 14:16:48:595 EDT] TextFinder.findNext() [0.08 seconds]
[19-06-09 14:16:48:596 EDT] Sheet.getRange([A:A]) [0 seconds]
[19-06-09 14:16:48:596 EDT] Range.createTextFinder([b]) [0 seconds]
[19-06-09 14:16:48:597 EDT] TextFinder.matchCase([false]) [0 seconds]
[19-06-09 14:17:21:064 EDT] TextFinder.findNext() [32.467 seconds]
[19-06-09 14:17:21:072 EDT] Execution failed: Service error: Spreadsheets (line 103, file "main") [32.626 seconds total runtime]

最佳答案

这里的 Range 设置为整个 A 列,包括数千个空行。 TextFinder 似乎基于 getLastRow() 进行搜索或者非常喜欢的东西。对于表,getLastRow()返回带有内容的最后一行的值,但在一个范围内,它返回 the last row within that range .

有两种方法可以解决这个问题: 在创建 TextFinder 之前指定一个更窄的范围

var found = sheet.getRange(1,1,sheet.getLastRow()).createTextFinder("dog").matchCase(false).findNext();

它将仅搜索第一列,从第一行开始,并在最后一行结束内容。

或者,您可以使用循环而不是 TextFinder,例如
var column = sheet.getRange("A:A").getValues();
var foundIndex;
for (var i = 0; i < column.length; i++){
if (column[i][0] === "dog") {
foundIndex = i;
break;
}
}

关于google-apps-script - 使用 TextFinder 搜索范围比搜索整个工作表慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56517186/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com