Показать / Скрыть определенные столбцы на основе флажков - PullRequest
0 голосов
/ 11 февраля 2019

Так что я должен листы / панели в Google Sheet.Моя таблица «Настройки» содержит несколько флажков.

Я хочу, чтобы у меня была возможность отображать / скрывать определенные столбцы на моем втором листе, основываясь на истинном / ложном состоянии этих флажков.

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

Я знаю, как это сделать в Excel, но у меня практически нет опыта работы со скриптом Google Apps, кроме того, что яЯ мог бы зайти в Google сегодня утром.

Может ли кто-нибудь помочь мне, указав мне правильный путь?

Для справки ниже приведен скрипт Visual Basics, который я использую для той же функции в Excel.:

Private Sub CheckBox17_Click()
['Competitive Matrix (EMEA NE)'!S:S].EntireColumn.Hidden = Not CheckBox17
End Sub

1 Ответ

0 голосов
/ 11 февраля 2019

Это будет немного более многословно, чем версия Visual Basic:)

function hideColumns() {
  // takes active spreadsheet (the one the script is bound to) into work
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var settingsSheet = ss.getSheetByName('Settings'); // insert your sheet name here
  var dataSheet = ss.getSheetByName('Data');
  // gets values from all the cells in the settings sheet into a two-dimensional array, like [[1, 2],[3, 4]]
  var values = settingsSheet.getDataRange().getValues(); 
  for (var i in values) {
    // checks every row of data if the value in first column is false or not
    if (values[i][0] == 'false') { 
      // my assumption is that each of your checkboxes is on a new line; 
      // hideColumn will hide those columns that correspond to rows to in the settings sheet
      dataSheet.hideColumn(dataSheet.getRange(1, i)); 
    }
  }
}

Скрипт Google Apps содержит очень хорошую документацию почти по всем своим сервисам, SpreadsheetApp довольно хорошо освещен, посмотрите эти страницыо функциях, использованных выше:

hideColumn ()

getRange ()

getValues ​​()

UPD: версия с использованием функции onEdit - она ​​просматривает отредактированную ячейку и проверяет, находится ли она в первом столбце листа «Настройки» и новое значение - true.Если все это правда, в «Данные» будет скрыт столбец, который соответствует отредактированной строке.

function onEdit(e) {
  var dataSheet = e.source.getSheetByName('Data');
  var currentSheet = e.range.getSheet().getName();
  var row = e.range.getRow();
  var col = e.range.getColumn();
  if (currentSheet === 'Settings' && col === 1 && e.value.toLowerCase() == 'false') {
    dataSheet.hideColumn(dataSheet.getRange(1, row));
  }
}

Подробнее о e объекте в onEdit функциях: https://developers.google.com/apps-script/guides/triggers/events

...