使用 TextFinder 搜索范围比搜索整个工作表慢

2024-04-18

我有一张有很多行的表——数千行。我想在特定列中搜索文本。我在用Range.createTextFinder但它超时了。如果Sheet只有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();

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

Update:这是执行记录:

[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()返回最后一行的值有内容,但在一定范围内,它会返回该范围内的最后一行 https://developers.google.com/apps-script/reference/spreadsheet/range#getLastRow().

有两种方法可以解决此问题: 在创建 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;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 TextFinder 搜索范围比搜索整个工作表慢 的相关文章

  • 触发器根据其创建维护激活序列并在每次运行时保护电子表格数据

    我正在向我的 Web 应用程序发送 5 个请求 import requests backodds 3 00 layteam Flamengo layodds 1 50 advantage 25 55 webAppsUrl https scr
  • 如何使用 Google Apps 脚本编辑现有的 Google 表单项(问题)

    我有一个谷歌脚本来构建谷歌表单 该脚本使用包含问题和相应选项的电子表格填写表单 表格中显示的问题需要定期更新 我希望通过更改电子表格中的问题来更新表单中的问题 如下所示 I use onOpen 对于脚本 以便每次访问表单时 脚本都会重建最
  • 如何检查 Gmail 标签是否有嵌套子标签?

    使用Google Apps脚本 是否有一个功能可以检查Gmail标签是否有嵌套子标签 如果标签有一个或多个子标签 我想将它们从代码序列中排除 没有直接的方法可以从 父 标签获取标签 但是使用简单的方法来获取标签非常简单getUserLabe
  • 将活动工作表作为电子邮件附件从 Google 工作表发送

    我有一个谷歌表单 可以捕获电子表格中的响应 目前 每次做出新响应时 它都会创建一个新工作表 我现在尝试将 邮寄活动工作表脚本 添加到创建新工作表的现有脚本中 但是我收到错误 请求失败https docs google com spreads
  • 如何使用应用程序脚本在 Google 电子表格中移动工作表 [重复]

    这个问题在这里已经有答案了 我想使用应用程序脚本在电子表格中移动工作表 怎么做 最好的直播 你看过吗文档 https developers google com apps script reference spreadsheet sprea
  • 如何使用 Google Sheets onEdit() 触发器运行函数来更新 Google Form

    我有一个 Google 表格工作簿 其中有一个工作表 我想用它来保存工作簿和 Google 表单的设置 我做了一个定制onEdit 触发两个函数的函数 一个用于更新工作簿 另一个用于更新表单 function onEdit e var ra
  • 如何在多个工作表上运行脚本,Google Sheets

    我有一个脚本 想在 Google 工作表中的特定选项卡上运行 但不一定在所有选项卡上运行 我尝试执行两个不同名称的脚本 但只有最后一个保存的脚本会运行 如何编写此脚本以在特定选项卡上运行 这是我的开始脚本 function onEdit v
  • 谷歌表格根据今天的日期隐藏行

    在 Google Sheets 中 当 A 列中的日期等于或早于今天的日期时 我需要一个脚本来自动隐藏工作表 1 中的行 因此 如果今天是 2018 年 8 月 29 日 单元格 A3 中的日期是 2018 年 8 月 28 日 则第 3
  • 根据单元格值隐藏列

    在我的谷歌电子表格 A 中 我使用 TRANSPOSE 和 IMPORTRANGE 公式的组合从日历电子表格 B 导入数据 以便填写事件的工作时间表 因为每个日期都有 3 个事件空位 但这些空位并不总是被填满 所以我收到了很多过时的列 表格
  • Google Apps 脚本:连接日期和时间

    更新 要使用 AppsScript 创建 Google 日历事件 我们可以使用以下简单方法createEvent eventName startTime endTime 我已经使用过这个并且没有任何问题 但我使用的唯一日期格式是谷歌表格中的
  • 使用应用程序脚本将 MS Word 文件(保存在云端硬盘中)转换为 Google 文档

    我被某些事情困住了 找不到解决办法 有没有办法使用文件 url 或 id 将存储在 Google Drive 中的 MS Word 文件转换为 Google 文档 我目前有一个电子表格 其中包含文件的网址 或者 也可以使用 python 脚
  • 在Google电子表格中划分整列

    我是 Google 电子表格的一个相对较新的用户 我希望 B 列中的每个单元格都是 A 列 同一行 中内容除以 5 的结果 B1 B2 B3 等 商 应为 A1 A2 A3 等 被除数 除以 5 除数 在示例中 B1 A1 5 我知道一项一
  • 如何使用 Google Apps Docs 脚本将光标移动到文档的开头?

    我正在用我的 Google 文档编写 Google Apps 脚本的脚本 并想知道如何将光标移动到文档的开头 我最后想做的只是用一些字符串替换第一行 这个很简单 你可以使用setCursor method 记录在这里 https devel
  • Google Apps 脚本:比较日期

    我在比较 Google Apps 脚本中的日期时遇到了一个奇怪的问题 为此 我的工作表在 cell getValue 中有一个日期 所以 e range setNote cell getValue startDate 行中 注释显示两个看起
  • 如何像函数一样使用 google.script.run

    在 Google Apps 脚本中 我有以下脚本 function doGet return HtmlService createHtmlOutputFromFile mypage function writeSomething retur
  • 如何在多个文档中使用 Google Apps 脚本

    我有一个谷歌应用程序脚本 我想在多个文档中使用它 我也可能想稍后在这些文档中更改它 因此我必须使用same所有这些文档中的脚本 而不是该脚本的副本 我知道以下问题可能属于重复问题 但我不愿意接受它的答案 Google Apps 脚本 如何在
  • 在 Google 表格脚本中设置活动单元格的值

    我想创建一个公式 在某个单元格更改上创建时间戳 下面的代码就可以了 我现在想做的是将公式转换为纯文本 将该时间戳锚定到工作表上 如果您手动执行此操作 您将选择时间戳 复制它们并将它们粘贴为值 我不想手动执行此操作 因此我创建了下面的脚本 它
  • 为什么我们使用 SpreadsheetApp.flush()?

    我的理解是 flush https developers google com apps script reference spreadsheet spreadsheet app flush有助于在功能发生时执行这些功能 而无需将它们捆绑在
  • Google Apps 脚本 - 是否可以仅通过 Google Apps 脚本更改表格中的某些单元格?

    我在 Google SpreadSheet 中制作了一个目录 我的电子表格有一个表格 用户可以在其中添加信息 该表是通过从数据库表获取数据的脚本动态创建的 用户可以编辑表中的某些单元格 然后单击按钮将更改保存回数据库表中 我想限制他可以手动
  • 我们可以使用 Google Spreadsheet 作为后端数据库吗

    我正在尝试开发一个应用程序 在其中从与某些事务相关的多个客户端获取数据 现在我想使用 Google Spreadsheet 进行一些分析 有什么方法可以使用 ASP Net MVC 使用 C 实现此目的 Google 提供 OAuth 当我

随机推荐

  • UnknownEntityTypeException:无法找到持久化器(Hibernate 5.0)

    在下面的代码中 当我尝试执行时Main java我遇到异常 Exception in thread main org hibernate UnknownEntityTypeException Unable to locate persist
  • 如何在方案中向后打印字符串?

    我知道如果我按照以下方式编写方案代码并输入 单词 a b c 它将以相同的顺序输出列表 您能告诉我是否有一种方法可以以相反的顺序打印出来 例如 列出 c b a 它需要是我以相反顺序打印出来的用户输入 所以 我不能称之为 反向 a b c
  • jquery add方法及实现

    好的 从我之前的帖子中我得到了很多好的反馈 我开始这个问题是为了开始一个新问题并添加我拥有的完整代码 我知道有些事情搞砸了 但这是我的方法和实现 jquery validator addMethod passwordRules functi
  • 使用 Json.net 仅将接口属性序列化为 JSON

    有了这样一个简单的类 接口 public interface IThing string Name get set public class Thing IThing public int Id get set public string
  • enumerateBodiesAlongRayStart 在 Xcode 6 中将“Chance”打印到控制台

    我正在使用 enumerateBodiesAlongRayStart 并且此方法不断地将单词 Chance 打印到我的控制台 有什么办法可以抑制这种情况吗 这是怎么回事 self gameScene physicsWorld enumera
  • std::ignore 用于忽略未使用的变量

    这是一个好的使用方法吗std ignore忽略未使用的变量 假设我有一个这样的函数 void func int i for some reason I don t need i anymore but I cannot change sig
  • MSTest - 如何为 UnitTest 项目初始化 log4net?

    我有一个 Visual Studio 单元测试项目 用于测试 ASP NET MVC 项目 添加程序集级别log4net Config XmlConfiguratorAssemblyInfo cs 的属性不起作用 SO 上的其他人发现他们必
  • 多个参与者,相同的用例 [用例]

    我试图描述一个用例 其中系统内的多个参与者可以执行相同的活动 例如 假设 作为示例 我想要使用 更新客户端 用例 但几个已确定的参与者可以执行此操作 Manager Chief Executive Customer Service Repr
  • 一个单元如何测试基于过程或基于事件的代码部分

    我确信来自这个演示文稿 http www masukomi org talks unit testing talk 2 index xul data slide data txt page2以及网站上的其他评论 我需要学习单元测试 我还意识
  • 将事件发送到特定线程

    我有一种情况 我想要一个线程来处理一些顺序逻辑 该线程有时需要与主线程交互才能更新用户输入 但它应该继续运行 否则不会影响主线程 我希望以事件驱动的方式执行此操作 以便主线程不必为中断而极力控制其他线程 做这个的最好方式是什么 是否有类似于
  • 为什么这个 SwiftUI Picker 代码不起作用?

    Xcode 11 2 1 下面的代码是一个包含两个组件的简单表单 选择器 选择字母 和文本 显示所选字母 代码编译并运行 但是当选择一个字母时 它不会出现在 选定 文本中 此外 第一次 仅 选择一个字母时 Xcode 会显示一个 虚假的 运
  • Graphics2D:在白色上绘制黑色?

    我确信这是一个非常愚蠢的问题 但我找不到答案 我对 Java2D API 没有经验 我正在尝试创建一个图像并将其写入 GIF 或 PNG 并且我希望它在白色背景上使用黑色笔 如果我不设置任何颜色 我会得到黑底白字 如果我使用 setPain
  • 在多级列 pandas 数据框中创建列的更好方法

    假设我有一个 pandas 多层列数据框架df像这样 A B gt first level x y x y gt second level 0 5 5 1 5 1 3 1 4 7 2 1 4 10 20 3 50 8 7 8 如何创建一个新
  • 如何在 Perl 中读取不断更新的文件?

    您好 我想通读一个文件 进入睡眠状态 然后检查是否有新记录写入该文件 如果是 我想处理记录 如果否 则返回睡眠并稍后再次检查 在永远循环中 我以为我可以做这样的事情 但是在它第一次读取文件之后 它似乎永远不会获取添加到文件中的新记录 ope
  • 数据变量没有从 Vue.js 中使用 Vuex 的计算属性的观察者更新

    Fiddle https jsfiddle net mjvu6bn7 https jsfiddle net mjvu6bn7 我有一个计算属性的观察者 它依赖于 Vuex 存储变量 该变量是异步设置的 当这个计算属性发生变化时 我试图设置
  • 如何使用 SVN 和 .NET 以编程方式进行文件版本控制?

    我们有一个报告生成器 每天 它都会将数据写入 Excel 文件 出于版本控制和文件数据安全的原因 我们需要更改此文件 并将更改提交到存储库中 您推荐您使用过的任何 net SVN API 吗 你应该看看SharpSvn http sharp
  • Spring boot 动态查询

    我的网络应用程序中有一个过滤器 允许按车辆类型 品牌 燃料 州和城市进行搜索 但所有这些过滤器都是可选的 我怎样才能使用存储库来做到这一点 控制器类 RequestMapping value vehicle search method Re
  • 为什么 GCC (9.3.0) 中仍然没有实现 `gets_s()`?

    I know fgets 是更常见和广泛的字符串输入选项 但 C11 已经存在 9 年了 为什么是gets s 还失业吗 即使我添加 std c11 它仍然不起作用 尽管gets s 应该在stdio h 因为它是可选的 还有背后的人gcc
  • Bootstrap 手风琴展开/折叠全部无法正常工作

    这是打破这个的过程 单击乐谱 单击全部展开 折叠 单击乐谱 单击全部展开 折叠 再次单击全部展开 折叠 请注意 音乐符号不会重新打开 尽管您应该能够在函数中看到 逻辑表明所有面板都已关闭并且应该打开 为什么 我究竟做错了什么 HTML
  • 使用 TextFinder 搜索范围比搜索整个工作表慢

    我有一张有很多行的表 数千行 我想在特定列中搜索文本 我在用Range createTextFinder但它超时了 如果Sheet只有4行数据 甚至会超时 This is very slow var found sheet getRange