0

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

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

所以,我尝试编写一个自定义函数,它接受 V 中的所有值,从数据库中检索值,并将它们填充到 T3 中的 TEg 中,我将有 =myFunction(V3:V100)

然后,我的 for 脚本循环遍历 V 中的每个单元格并执行以下操作:(*people_sheet = 我的数据库表;行 = 每个 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 的优化页面,但没有解决从表中获取值的问题。

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

4

1 回答 1

0

该解决方案最终完全避免了“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,因为我从“新”谷歌表格中遇到了 2,000,000 个单元格的限制,并将其分布在多张表格中)。我只导入那些将被这个函数使用的。(幸运的是它们是相邻的。如果不是这样,我可能会创建另一个“帮助”表,通过引用将我需要的所有列聚集在一起。)

于 2015-12-01T14:14:07.237 回答