优化Google脚本值检索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化Google脚本值检索相关的知识,希望对你有一定的参考价值。

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

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

因此,我尝试编写一个自定义函数,它接受V中的所有值,从数据库中检索值,并在T.中填充它们。在T3,我会= myFunction(V3:V100)

然后,我的脚本循环遍历V中的每个单元格并执行以下操作:(* people_sheet = my database 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填充col T.

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

我阅读了Google的优化页面,但没有解决从表中获取值的问题。

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

答案

解决方案最终完全避免了“getRange”和“getValue”调用。它们在访问Google表格上的数据时效率极低。

我最后重写了我的函数以实际接受我的数据库作为范围,添加一个新参数:= 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,因为我从“新”谷歌表中遇到了2,000,000个单元格限制并将其分散到多张纸上)。我只导入这个函数使用的那些。 (幸运的是它们是相邻的。如果不是这样的话,我可能会创建另一个“帮助”表,通过引用将我需要的所有列聚集在一起。)

以上是关于优化Google脚本值检索的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期值从 JSON 返回到 Google Visualization API

Google Apps 脚本 - 如何解析响应

Unity优化篇 | Unity脚本代码优化策略,空引用快速检索使用合适的数据结构禁用脚本和对象等 性能优化方法

如何通过使用数组从 Google 表格中提取数据并格式化来优化 Apps 脚本代码?

如何优化C ++代码的以下片段 - 卷中的零交叉

Spotify API - 在 Google Apps 脚本中检索有效的访问令牌