【问题标题】:Google Sheets - Hide Column(s) based on Row 1 valueGoogle 表格 - 隐藏列)基于第 1 行的值
【发布时间】:2020-09-28 11:20:43
【问题描述】:

我在按列组织的谷歌工作表上有一堆内容。我想要一个脚本来检查第 1 行从单元格 4 到 100 以查看是否出现字母 X。如果出现字母 X,则脚本应隐藏该列。

然后与第 1 行内容无关,取消隐藏所有列的反面。我找到了这个 sn-p 的代码,但它们似乎并没有真正做任何事情,没有显示失败或错误,只是没有隐藏列

function hideColumn() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // get first sheet
  var sheet = ss.getSheets()[0];

  // get data
  var data = sheet.getDataRange();

  // get number of columns
  var lastCol = data.getLastColumn()+1;

  Logger.log(lastCol);

  // itterate through columns
  for(var i=1; i<lastCol; i++) {
     if(data.getCell(1, i).getValue() == 'x') {
        sheet.hideColumns(i);
     }
  }
}

function showColumn() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // get first sheet
  var sheet = ss.getSheets()[0];

  // get data
  var data = sheet.getDataRange();
  
}

我已经设法直接在 Excel 中编写了相同的操作,并且它们按照下面的代码完全按照我想要的方式工作,但是,当我将 .XLSM 文件上传到 Google Drive 和时,谷歌不喜欢命令按钮或代码作为工作表运行....有什么想法吗?下面的 Excel 代码运行良好

Private Sub CommandButton1_Click()
For i = 4 To 30
If Worksheets("Current Orders").Cells(1, i).Value = "x" Then
Worksheets("Current Orders").Columns(i).Hidden = True
End If
Next
End Sub

Private Sub CommandButton2_Click()
For i = 4 To 30
Worksheets("Current Orders").Columns(i).Hidden = False
Next
End Sub

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    答案:

    你可以通过TextFinder.来做到这一点

    代码示例:

    function hideColumnsWithx() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
      var cells = sheet.createTextFinder("x").matchEntireCell(true).findAll();
      
      cells.map(x => sheet.hideColumns(x.getColumn()));  
    }
    

    这个函数的概要:

    • 从活动电子表格中获取第一张工作表
    • 查找所有恰好包含字符串“x”的单元格区域
    • 使用array.map()隐藏从TextFinder返回的每一列

    参考资料:

    【讨论】:

    • 效果很好,脚本是否可以调整为仅在一行中查找 X 值而不是在整个电子表格中查找,也可以在 Doc 中选择一个特定的命名电子表格吗?最后是否有一个代码可以取消隐藏所有列...?我也不能让那块工作......隐藏部分像梦一样工作!
    • 道歉,} 我尝试了一个空白样本,它在那里运行良好,但在我的真实数据所在的实时电子表格中,脚本没有做任何事情?
    • @HariKara 可以,但它超出了原始问题的范围,因此您应该将其作为一个新问题提出。 Stackoverflow 是一个问答论坛,每个单独的问题都应该作为一个不同的问题来解决。你可以问一个新问题here
    • 为什么您的脚本不能在实际电子表格上运行,但在空白的新电子表格上运行?我将 X 放在每一列的第一行,但脚本没有隐藏这些列?
    • 您能分享一份经过清理的工作表副本吗?
    猜你喜欢
    • 2016-05-14
    • 2013-07-17
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2012-04-18
    相关资源
    最近更新 更多