繁体   English   中英

在大型电子表格中,基于单元格值隐藏行会生成错误“超出最大执行时间”

[英]Hiding row based on cell value, in large spreadsheet generates error “Exceeded Maximum Execution Time”

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

我正在使用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分钟的最长时间?

当脚本使用保留的函数名称onEdit时,每次进行编辑并且每次循环遍历所有工作表行时都会触发该脚本,如果满足条件,则即使该行已经被隐藏,它也会将其隐藏。

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

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

注意:我尚未测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM