Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 优化google脚本值检索_Javascript_Optimization_Google Apps Script_Google Sheets_Getvalue - Fatal编程技术网

Javascript 优化google脚本值检索

Javascript 优化google脚本值检索,javascript,optimization,google-apps-script,google-sheets,getvalue,Javascript,Optimization,Google Apps Script,Google Sheets,Getvalue,我有一个数据库表-60列宽100000行 在我的另一个工作表中,有一列V指定了数据库工作表中的行,我需要在不同的列T中显示特定数据库列的相应值 因此,我尝试编写一个自定义函数,它接受V中的所有值,从数据库中检索值,并将它们填入T。 例如,在T3中,我将拥有=myFunctionV3:V100 然后,我的脚本循环遍历V中的每个单元格,并执行如下操作:*people_sheet=我的数据库工作表;行=每个V单元格中的数值 output_array[i] = people_sheet.getRange

我有一个数据库表-60列宽100000行

在我的另一个工作表中,有一列V指定了数据库工作表中的行,我需要在不同的列T中显示特定数据库列的相应值

因此,我尝试编写一个自定义函数,它接受V中的所有值,从数据库中检索值,并将它们填入T。 例如,在T3中,我将拥有=myFunctionV3:V100

然后,我的脚本循环遍历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();
然后返回输出_数组,其思想是填充T3中的colt

我发现这是非常低效的,除非我将调用减少到类似myFunctionV3:V4的东西,否则脚本会超时并出现错误

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


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

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

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