Google 工作表:如果某个单元格为空,则隐藏行

Google Sheets: Hide rows if a certain cell is empty

我现在正在努力在某个单元格为空时隐藏一行。隐藏行的代码有效,但我遇到了问题。这是我正在尝试做的示例电子表格:LINK

如您所见,如果 A 列上没有任何值,它将起作用。

但是当我把一些东西放在 A 列时,它看起来像这样。

下面是隐藏行的代码:

var startRow = 6;
var colToCheck = 2;

function script_HideRows() {
  var sheetNames = ["MS_Q1", "MS_Q2", "MS_Q3", "MS_Q4", "SUMMARY"];  // Please set the sheet names here. In this case, 4 sheets are used.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.getSheets().forEach(sheet => {
    var sheetName = sheet.getSheetName();
    if (sheetNames.includes(sheetName)) {
      if (sheetName == "SUMMARY") {  // When the sheet is "SUMMARY", the start row is changed.
        startRow = 7;
      }
      var numRows = sheet.getLastRow();
      var elements = sheet.getRange(startRow, colToCheck, numRows).getValues();
     
      for (var i=0; i<(numRows - startRow); i++) {
        if (shouldHideRow(sheet, i, elements[i][0])) {
          sheet.hideRows(startRow + i);
        }
      }
      // Hide the rest of the rows
      var totalNumRows = sheet.getMaxRows();
      if (totalNumRows > numRows)
        sheet.hideRows(numRows+1, totalNumRows - numRows);
    }
  });
}

我从这里得到了代码:

我只想隐藏 B 列中所有具有空单元格的行。

希望有人能帮助我。抱歉英语不好。提前致谢!

我认为在您的脚本中,numRows - startRow 可能与 elements 的长度不同。那么在这种情况下,下面的修改呢?

发件人:

for (var i=0; i<(numRows - startRow); i++) {

收件人:

for (var i=0; i < elements.length; i++) {