在大型电子表格中隐藏基于单元格值的行会产生错误"超过最大执行时间"

时间:2018-06-01 16:42:28

标签: google-apps-script google-sheets

我试图根据单元格中的值隐藏行。

我使用Google表格作为商品库存。在最后一栏,如果我标记"是"我希望隐藏整行。

代码在模板工作表上工作,但是当我尝试在我的主库存上激活它时,它会说“超过最大执行时间"”,我认为这是因为它是一个非常大的库存。

function onEdit() {

var ss = SpreadsheetApp.getActiveSpreadsheet();

var sheet = ss.getActiveSheet();

  var lastRow = sheet.getLastRow();

  for( i=1 ; i<=lastRow ; i++) { // i <= lastRow

      var status = sheet.getRange("AD"+i).getValue();

      if (status == "Yes") {

         sheet.hideRows(i);
    } 
   }
  }

我确实在触发器上看到你可以将它设置为时间驱动。

如何使代码不超过5分钟的最长时间?

1 个答案:

答案 0 :(得分:1)

由于您的脚本使用保留的函数名称onEdit,因此每次编辑时都会触发它,并且每次遍历所有表格行时都会触发它,如果符合条件,它会隐藏该行,即使它是&#39;已经隐藏了。

更改脚本以检查当前编辑的单元格,在编辑事件对象上使用en,并且仅在满足条件时隐藏当前行。如下所示:

function onEdit(e){
   if(e.range.getColumn() === 30 && e.value === 'Yes'){
     e.range.getSheet().hideRows(e.range.getRow())
   }
}

注意:我还没有测试过。