Google脚本根据单元格文本隐藏行

时间:2017-10-20 06:14:59

标签: google-sheets

我目前正试图找到隐藏文字的每一行的方法"是"在第11页到第11页的B列中。目前我可以隐藏包含"是"的行。但仅限于第11张,而不是接下来的几张。关于如何解决这个问题的任何想法都将非常感激。

function Hide() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  for (var i = 11; i <= 16; i++) {
    var sheet = ss.getSheets()[i];

    sheet.showRows(1, sheet.getMaxRows());
    for (var i = 1; i < sheet.getMaxRows()+1; ++i) {
      if (sheet.getRange(i,2).getValue() == "Yes") {
        sheet.hideRows(i,1);
      }
    }
  }
}

1 个答案:

答案 0 :(得分:2)

您正在使用i两次,一次用于工作表,一次用于行。

另外,如果你有很多行,那么一次读取列然后遍历数据是有意义的。

function Hide() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  for (var sheetI = 1; sheetI <= 3; sheetI++) {
    var sheet = sheets[sheetI];
    sheet.showRows(1, sheet.getMaxRows());
    var colB = sheet.getRange("B:B").getValues().map(function(row) {return row[0];});

    colB.forEach(function(value, rowI) {
      if (value === "Yes") {
        sheet.hideRows(rowI + 1, 1);
      }
    });
  }
}

你甚至可以扩展它以隐藏连续的“是”行,如果这种情况经常发生以使其更快