我怎样才能提高我的自动隐藏脚本在谷歌表格,因此它不会超时(How can I enhance my

2019-10-23 00:58发布

我有多个电子表格运行脚本...它自动隐藏包含特定值的行。 目前,这个脚本是设置到凌晨3:00左右每天运行,以确保没有一个活跃于它,而它处理。 这个问题是我现在运行到是这片变得太大而不能使用我当前的脚本,它通过线延伸线。 脚本超时而没有完成。 我猜它仍然运行在已经隐藏了所有行的脚本。

这里是我当前的脚本,这是非常基本的:

function autoHide() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("SHIPPING");

      //get data from column 
  var data = sheet.getRange('AD:AD').getValues();

      //iterate over all rows
  for(var i=0; i< data.length; i++){
      //compare first character, if greater than 0, then hide row
    if(data[i][0] > 0){
      sheet.hideRows(i+1);

    }
  }
}

我试图寻找更好的选择时,发现那里的人都在谈论使用数组过滤器,或批量运行,加以解释,这似乎不只是不同的事情足以让我翻译到了我的工作。 我知道,运行此一行行是不是最好的方法,尤其是在1000行和成长。

对于最好的情况下,我想有一个使用我当前的脚本执行处理的分数一个非常有效的脚本。 否则,如果只是运行上是可见的行脚本的方式,这将是几乎一样好。 最坏的情况,如果只是一种方法来告诉它拿起它离开的地方时,它给了超时错误......通过把某些类型的标签或某事知道从哪里开始回升。

我不认为联片是必要的,我只需要能够隐藏在列AD一个大于0,在一个名为“送货”表的任何行。

Answer 1:

虽然你可以加快(按配料需要隐藏连续的行例如)脚本本身也将evenctually超时。
相反,你的脚本应该在脚本属性记得的最后一排它处理,AO,如果脚本超时将继续从该行开始。
您还需要改变触发倍。 使其运行,每10分钟,但只有1开始处理)过去的上午03点和b)处理的最后一行还不是最后一行(你完成时重置为零)。
这应该处理庞大的床单就好了。 通过上午05点它会从上午03点执行12次,所以应该能够处理12倍以上的行。
请注意,我选择10分钟的触发,使得原来的触发(可能6分钟运行)永远不会重叠下一个触发。
所以你如果过去的上午03点检查时已经使用的时区一定要确保来设置时区的表和脚本文件的属性。



文章来源: How can I enhance my auto hide script in Google Sheets so it wont time out