Google sheet 获取循环固定数组

Google sheet get fasten array for loop

当range.length > 300 行时,是否可以固定许多行的隐藏?

一旦行被隐藏,我也无法成功将焦点移动到 sheet 的顶部,我只能将焦点放在另一个 sheet。

这是我的代码(法语参数),我不确定是否需要显示我的点差[​​=20=]。非常感谢。

var LastRow = sheet.getLastRow()-1;
var ToHide = [];
for (var i=1 ; i < LastRow +1 ; i++){
    if ( sheet.getRange(i,1).isChecked() == null){ ToHide.push(i); }
}

for (var j=0 ; j<ToHide.length ; j++){ MyActiveSheet.hideRows(ToHide[j+1],1); }

ToHide.forEach(function (d){ FeuilleActive.hideRows(d); }); // also tried .hideRows(d,1)

SpreadsheetApp.getActive().getSheets()[5].getRange(1,1).activate(); // 

为了减少循环次数,您可以通过确定数组中连续数字的系列来对其进行分组。您可以使用它来确定要隐藏的索引和行数。 .hideRows() 执行的次数将由数组中的系列数决定。因此,运行时间更短。

示例代码:

function myFunction() {
  var a = [1,2,3,4,6,7,8,9,11,13,14];

  const result = a.reduce((r, n) => {
    const lastSubArray = r[r.length - 1];
    if(!lastSubArray || lastSubArray[lastSubArray.length - 1] !== n - 1) {
      r.push([]);
    } 
    r[r.length - 1].push(n);
    return r;  
  }, []);
   
  //result output: [[1.0, 2.0, 3.0, 4.0], [6.0, 7.0, 8.0, 9.0], [11.0], [13.0, 14.0]]
  result.forEach(e => {
    var index = e[0];
    var numRows = e.length;
    Logger.log("Index: "+ index);
    Logger.log("numRows: "+numRows);
    // MyActiveSheet.hideRows(index,numRows);
  })  
}

输出:

参考文献: