我想在 google 工作表中显示/隐藏带有宏的行

I want to show / hide rows with macros in google sheets

/* 我想要使用宏的代码来隐藏和显示多列,但使用相同的按钮。但是,它没有给出预期的结果。我需要你的帮助。 */

function Show_Hide() {
  var spreadsheet = SpreadsheetApp.getActive();
  var status = 1;

  function Show() {
    spreadsheet.getActiveSheet().getColumnGroup(3, 1).expand();
    status = 1;
  };

  function Hide() {
    spreadsheet.getActiveSheet().getColumnGroup(3, 1).collapse();
    status = 0;
  };

  if (status==1){
    Hide();
  } else{
    Show();
  }
}

您的代码中的错误是您将 status 设置为 1,然后检查它是否等于 1。 (按此逻辑它将始终等于 1)。

相反,

Show/Hide 分组列:

function ShowHide() {

  const targetGroup = SpreadsheetApp.getActive()
                                    .getActiveSheet()
                                    .getColumnGroup(3, 1)

  return (targetGroup.isCollapsed())
  ? targetGroup.expand()
  : targetGroup.collapse()

}

这将检查指定的列组是否 .isCollapsed(),如果是,将展开,否则将折叠。

了解更多:

Show/Hide 分组 & Non-Grouped 列:

function ShowHide() {

  const sheet = SpreadsheetApp.getActive().getActiveSheet()

  const colStart = 3 // "C"
  const numOfCols = 8 // "C" => "J"

  try {

    if (sheet.getColumnGroup(colStart, 1)) { 

      return (targetGroup.isCollapsed())
      ? targetGroup.expand()
      : targetGroup.collapse()  
      
    }

  } catch (e) {

    return (sheet.isColumnHiddenByUser(colStart)) 
    ? sheet.showColumns(colStart, numOfCols) 
    : sheet.hideColumns(colStart, numOfCols)

  }

}