当前位置: 首页 > 知识库问答 >
问题:

优化google脚本值检索

苏洛城
2023-03-14

我有一个“数据库”表——60列宽100,000行。

在我的另一个工作表中,我有一列(V)指定该数据库工作表上的行,我需要在不同的列(T)中显示来自特定数据库列的相应值。

所以,我尝试编写一个自定义函数,它接收V中的所有值,从数据库中检索值,并用T填充它们。例如,在T3中,我将拥有=myFunction(V3: V100)

然后,我的脚本for循环遍历V中的每个单元格,并执行如下操作:(*people_sheet=我的数据库表;row=每个V单元格中的数字值)

output_array[i] = people_sheet.getRange(row, last_name_col_num, 1, 1).getValue() + " (" + people_sheet.getRange(row, first_name_col_num, 1, 1).getValue() + ")" + people_sheet.getRange(row, suffix_specifier_wikipedia, 1, 1).getValue();

然后我返回output_array,这个想法是它从T3填充科勒T。

我发现这是非常低效的,并且脚本会超时并出现错误(除非我减少对myFunction(V3:V4)的调用);

我通读了谷歌的优化页面,但没有任何内容解决从表中获取值的问题。

有人能提出解决这个问题的方法吗?

共有1个答案

令狐弘益
2023-03-14

解决方案最终完全避免了“getRange”和“getValue”调用。他们似乎在访问谷歌表单上的数据时效率极低。

最后我重写了我的函数以实际接受我的数据库作为一个范围,添加了一个新参数:=myFunction(V3:V207,People1!F1:H100000)

在函数内部:

output_array[i] = people_sheet_FGH_array[row][last_name_col_num - col_F_index] + " (" + people_sheet_FGH_array[row][first_name_col_num - col_F_index] + ")" + people_sheet_FGH_array[row][suffix_specifier_wikipedia - col_F_index];

请注意,我并没有导入所有60列。(事实上,我不得不将这个数字减少到20,因为我在“新”谷歌表单中遇到了2000000个单元格的限制,并将其分散到多个表单中)。我只导入此函数将使用的那些。(幸运的是它们是相邻的。如果不是这样,我可能会创建另一个“帮助器”工作表,通过引用将我需要的所有列聚在一起。)

 类似资料:
  • 我有一张保存ID的表。现在,我偶尔需要读取这些ID,并检查表中的其他值(名称)是否仍然符合ID。我的代码是: 从我所读到的,我知道单独调用每个单元格值需要更多的时间。然而,我不知道如何应用getValue来修复这些情况。基本上相同的问题在不同的衣服我有以下代码: 那么我如何使用get值来检查我得到的每个ID呢。我想我得用一些 或者 但我不知道如何实施,有什么想法吗? 有没有其他更有效的方法

  • 我拼凑了一个谷歌脚本脚本,用于谷歌表格,旨在找到某些行并移动它们。 当某一列中的复选框被标记时,我将从该行获取一系列单元格,然后将它们移动到另一列。我希望他们转到该列的最后一个空行。或者,如果方便的话,他们可以去第一个空行。 我已经有了这个功能,但是我担心一旦我的工作表达到一百或几百行,这个功能会运行得非常慢。 有人能帮我以更优化/高效的方式编写这段代码吗? 编辑:我需要特定列子集的最后一行,而不

  • 本文向大家介绍PowerShell脚本性能优化技巧总结,包括了PowerShell脚本性能优化技巧总结的使用技巧和注意事项,需要的朋友参考一下 最终优化 在你写脚本时,不要老是想着去优化,因为你的部分优化代码可能最终被丢弃。而且老是想着优化也会降低你的生产效率,因为和CPU的时间相比,脚本编写者的时间可能会更宝贵。 使用过滤参数 PowerShell可能会消耗很多资源,因为许多Cmdlet本身的设

  • 如何在脚本(下图)到达带有数据的最后一行后停止for循环继续? 我如何让每一组崩溃,而不是只让第一组崩溃? 我不知道如何合并导入脚本。我需要作为179,因为这是我想要组合在一起的行数,但不确定如何完成脚本。我修改了一个新的“录制的宏”,并向后工作了一点。此外,第一个组在分组后会按预期折叠,但其他组则不会。任何帮助都将不胜感激!

  • 我有两张表,都有保存到列中的日期。我的当前日期以相同代码保存在Sheet1和Sheet2上: 我想让我的一个脚本比较从Sheet1到Sheet2的日期 在Sheet1上,我使用一个小脚本设置当前日期,然后使用拖动功能设置列中的上一个和下一个日期,格式与此处相同: 设置Sheet1上的日期后,我使用以下脚本比较Sheet1和Sheet2中的日期,此脚本还设置Sheet2的日期,因为当激活此脚本时,它

  • 通过系统内置规则,将匹配规则的闲置浪费或安全性较低的资源扫描出来并按照建议进行处理,从而达到节约成本、提高资源安全性的目的。 建议列表 建议列表显示所有匹配优化建议规则的资源列表,用户可根据建议对资源进行处理。 忽略列表 忽略列表显示不需要处理的资源或一类规则建议。 规则配置 规则配置即针对不同资源的使用情况设置对应的规则,当资源匹配规则代表资源需要按照费用优化进行优化。