【发布时间】:2016-06-11 21:47:55
【问题描述】:
我正在构建一个预算电子表格,将 10 多张表格中的数据汇总到一张主表格中。其中一个电话是sheet.getRange(1, 1, max_rows);(或类似的电话)。该调用在第一列上大约需要 10 秒,但在其他列上接近 0 秒。这些调用中的每一个都在相同大小的工作表上(大约 75 行)。
我在每张纸上运行这个调用,所以虽然 10 秒一次是可以的,但 100 多秒是很长的运行时间!
这是代码的 sn-p。我已经尝试了set 1 和set 2,得到了相同的结果。 ss 和 cities 在脚本的前面设置。
var city_sheet = ss.getSheetByName(cities[i]);
var city_rows = city_sheet.getMaxRows();
// set one
var cat_range = city_sheet.getRange(1,1,city_rows).getValues(); // this one takes 10 seconds
var subcat_range = city_sheet.getRange(1,2,city_rows).getValues(); // ~0 sec
var value_range = city_sheet.getRange(1,4,city_rows).getValues(); // ~0 sec
// set two
var city_data = city_sheet.getRange(1, 1, city_rows, 4); // this one takes about 10 seconds
然后我循环遍历范围内的数据。关于如何加快速度的任何想法?
这是整个脚本的要点:https://gist.github.com/anonymous/b6a8985c9ea5e553182e
谢谢!
【问题讨论】:
-
我不会使用
getMaxRows();我会使用getLastRow()。getLastRow()将找到最后一行数据。getMaxRows();可以返回很多行,其中没有任何内容。如果这没有帮助,那么我很想知道 A 列中有什么? -
效果不错!整个脚本需要 2 秒。让它成为一个答案,我会标记它。谢谢!
-
感谢您告诉我。我添加了答案。
标签: javascript google-apps-script google-sheets