Google apps script google应用程序脚本仅隐藏特定范围的行 函数hideRows2(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var s=ss.getSheetByName(“Sheet1”); var r=s.getRange(“D:D”); var v=r.getValues(); var h=新数组(); var计数=0; s、 未经考虑(r); var firstRow=6; 对于(变量i=firstRow-1;i=v.length-1 | | v[i+1][0]!=“”){ 如果(计数>0) h、 推送([i+2-计数,计数]); 计数=0; } } 对于(var i=0;i

Google apps script google应用程序脚本仅隐藏特定范围的行 函数hideRows2(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var s=ss.getSheetByName(“Sheet1”); var r=s.getRange(“D:D”); var v=r.getValues(); var h=新数组(); var计数=0; s、 未经考虑(r); var firstRow=6; 对于(变量i=firstRow-1;i=v.length-1 | | v[i+1][0]!=“”){ 如果(计数>0) h、 推送([i+2-计数,计数]); 计数=0; } } 对于(var i=0;i,google-apps-script,google-sheets,Google Apps Script,Google Sheets,对象有两种方法: function hideRows2() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName("Sheet1"); var r = s.getRange("D:D"); var v = r.getValues(); var h = new Array(); var count = 0; s.unhideRow(r); var firstRow =

对象有两种方法:

function hideRows2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Sheet1");
  var r = s.getRange("D:D");
  var v = r.getValues();
  var h = new Array();
  var count = 0;
  s.unhideRow(r);
  var firstRow = 6;
  for(var i=firstRow-1;i<v.length;i++) {
    if( v[i][0]=="" )
      count=count+1;
    if( i >= v.length-1 || v[i+1][0]!="" ) {
      if(count>0)
        h.push([i+2-count,count]);
      count=0;
    }
  }
  for(var i=0;i<h.length;i++)
    s.hideRows(h[i][0],h[i][1]);
};


我认为您的循环应该使用hideRow()隐藏单独的行,而不是调用hideRows来隐藏多行。

显示您正在使用的代码及其当前和所需的输出?hi@NitinSingh hi我想要的输出是,如果columnD是空单元格,则能够隐藏第6行和第21行之间的行…当前脚本工作正常,但它运行第6行下面的所有行v、 长度为21,看看这是否有帮助?我建议从头开始重写,因为您的目标已经发生了巨大的变化。例如,此代码检查D列中的所有值,而您的新要求是检查第6行到第21行。等等。
hideRow(rowIndex)
hideRows(rowIndex, numRows)