根据用户输入单元格隐藏列

时间:2019-11-05 17:30:34

标签: google-apps-script google-sheets

大家好(我是脚本新手)

这是我需要帮助的工作表示例。

https://docs.google.com/spreadsheets/d/1iypkWdUsSkow9m8nTSFS25HgY1d5vsVMZvjEynwQJcM/edit?usp=sharing

我需要的是一个可以在edit上运行的脚本。

用户有5个可选字段,以黄色突出显示。只有在编辑单元格F3时,脚本才应运行。

它应该做的是隐藏第1行与F3不匹配的所有列。

请帮助!

1 个答案:

答案 0 :(得分:0)

我写了这个小函数,它根据F3中下拉列表的值来隐藏或取消隐藏列,并且仅在修改此单元格时才运行。

将此复制到绑定到电子表格的脚本中:

function onEdit(e) {
  var ss = e.source; // Spreadsheet that triggered the function
  var sheet = ss.getActiveSheet();
  var sheetName = "Sheet1"; // Change accordingly
  var range = e.range; // Range that was edited
  var editedColumn = range.getColumn();
  var editedRow = range.getRow();
  var column = 6;
  var row = 3;  
  // Check that the edited cell is F3 and the edited sheet is the one you want:
  if(column == editedColumn && row == editedRow && sheet.getName() == sheetName) {
    var dropdownValue = range.getValue(); // Value of F3
    // Index of last column with content. If you want to hide the blank columns after that, use sheet.getMaxColumns() instead:
    var cols = sheet.getLastColumn();
    // First row values:
    var headers = sheet.getRange(1, 1, 1, cols).getValues()[0];
    // Looping through each column (hiding or unhiding depending on whether value matches):
    for(var i = 1; i < cols; i++) {
      if(headers[i] != dropdownValue) {
        sheet.hideColumns(i + 1);
      } else {
        sheet.showColumns(i + 1);
      }
    }
  }
}

请告诉我这是否适合您。