首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google脚本超时解决方案

问Google脚本超时解决方案
EN

Stack Overflow用户
提问于 2017-10-18 15:19:14
回答 1查看 7.5K关注 0票数 1

我正在构建一个脚本,该脚本使用循环的ImportHTML命令来根据邮政编码对天气数据进行web搜索,并且当前在每次运行时都会遇到执行超时的问题。

当前设置脚本的方式在运行时会产生正确的结果,但是由于脚本正在从数百个源中提取数据,这需要一段时间,并且不会在Google脚本的当前时限内完成。

运行脚本的工作表使用3个选项卡:

  1. zip,它包含从要从站点中提取天气数据的邮政编码链接值的列表。
  2. 空,它只是用于执行脚本的中间工作表。
  3. 结果,最后的输出将放置在

为了尽可能地减少读/写量,我将代码从执行时编写ImportHTML命令的每个结果改为附加到数组并在脚本末尾写入这个数组。其当前形式的代码如下:

代码语言:javascript
复制
function getTemps() {
var googleSheet = SpreadsheetApp.getActive();

// Read in Zip code link values
var sheet = googleSheet.getSheetByName('ZIPS');   
var zipArray = sheet.getDataRange().getValues();
var arrayLength = zipArray.length;

//Set up sheet values
var blankSyntaxA = 'ImportHtml("https://www.wunderground.com/cgi-bin/findweather/getForecast?query=pz:';
var blankSyntaxB = '&zip=1", "table", 1)';
var tempResult = [];


// Writing Section

var sheet = googleSheet.getSheetByName('Blank'); 

for (var i = 0; i < arrayLength; i++)
  { 
     var liveSyntax = blankSyntaxA+zipArray[i][0]+blankSyntaxB;
     sheet.getRange('A1').setFormula(liveSyntax);
     var importedData = sheet.getDataRange().getValues();
     tempResult = tempResult.concat(importedData);
  }  
  var sheet = googleSheet.getSheetByName('Result');
  sheet.getRange(1,1,tempResult.length,8).setValues(tempResult);
}

我知道通过消除For循环中包含的读/写可以减少脚本的运行时间,但我不知道如何在“空白”表中不运行ImportHTML命令而获得必要的HTML表。是否有一种方法可以运行该命令来填充“importedData”数组而不写入工作表?

或者,我曾经考虑过利用对函数运行时的检查,并在接近5分钟运行时限制时实现中断,然后递归回原来的函数,但我不确定这是否真的会减轻运行时问题,甚至可能考虑到递归调用的性质。

任何关于如何修改此脚本以在脚本超时参数内运行或修改以产生所有必要的导入数据的完整预期结果的建议都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-01-02 19:47:30

是否有一种方法可以运行该命令来填充“importedData”数组而不写入工作表?

IMPORTHMTL是一个内置电子表格功能的谷歌表格。这类函数不能由Google脚本运行/评估。

相关

或者,我曾经考虑过利用对函数运行时的检查,并在接近5分钟运行时限制时实现中断,然后递归回原来的函数,但我不确定这是否真的会减轻运行时问题,甚至可能考虑到递归调用的性质。

而不是一个“缓解器”,这是一个解决办法。有几种技术,如批处理和并行处理。

参考文献

从回答到中的线程化

布鲁斯·麦克弗森有一个很好的例子。他的示例应用程序脚本中的并行处理在练习中使用Map。他也在使用触发器,但也许可以提供一些不同的视角。

另一种选择是登录到早期存取计划,将执行时间限制延长到30分钟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46813690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档