скрыть столбцы на основе пользовательской ячейки ввода - PullRequest
0 голосов
/ 05 ноября 2019

Привет всем (я новичок в написании сценариев),

вот образец моего листа, с которым мне нужна помощь.

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

что мне нужноскрипт, который будет запускаться onedit.

пользователь имеет 5 выбираемых полей, выделенных желтым цветом. скрипт должен запускаться только в том случае, если ячейка F3 редактируется.

, и он должен скрывать все столбцы, в которых строка 1 не соответствует F3.

, пожалуйста, помогите!

1 Ответ

0 голосов
/ 06 ноября 2019

Я написал эту небольшую функцию, которая скрывает или отображает столбцы в зависимости от значения раскрывающегося списка в 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);
      }
    }
  }
}

Скажите, пожалуйста, работает ли это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...