Фильтровать и фильтровать с помощью одной и той же функции в Google Sheets - PullRequest
0 голосов
/ 02 апреля 2019

Я создал фильтр, который фильтрует диапазон данных по столбцу дат с критерием сегодняшней даты.

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

Мне нужно, когда я нажимаю кнопку (вызываю функцию) один раз - она ​​фильтрует.

Я нажимаю обратно - не фильтруется.

Возможно ли это как-то?

var sortRange = sheet.getRange(3, 1, 200, 6);

var filter = sortRange.createFilter()

var criteria = SpreadsheetApp.newFilterCriteria().whenDateEqualTo(new Date())

filter.setColumnFilterCriteria(2, criteria.build())

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Это уже встроено - вы можете запросить Sheet для текущего фильтра .Если он уже установлен, вы можете легко удалить его.В противном случае вы получите null и сможете создать BasicFilter в соответствии с требованиями:

function foo() {
  const sheet = SpreadsheetApp.getActiveSheet();
  var filter = sheet.getFilter();
  if (filter) {
    filter.remove();
  } else {
    /** create your filter */
  }
}
0 голосов
/ 02 апреля 2019

Попробуйте что-то вроде этого:

function toFilterOrNotToFilter() {
  var onoff=PropertiesService.getScriptProperties().getProperty('on') || 'off';
  PropertiesService.getScriptProperties().setProperty('on',(onoff=='on')?'off':'on');
  var sortRange = sheet.getRange(3, 1, 200, 6);
  if(onoff=='on') {
    //set filter
  }else{
    //don't set filter  
  }

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