Как использовать, если условие для указанного c активирует значение фильтра пустых столбцов в Google Sheets для макроса (google-листов, фильтр, если, иначе, скрипт)? - PullRequest
1 голос
/ 23 марта 2020

Я не знаю, как использовать только фильтр столбца e для условия if. От b1 до e1 активны 4 фильтра столбцов. Я хочу проверить условие if, если фильтр e пуст. Тогда, если должно быть выполнено, в противном случае. Остальное опустошает фильтр. Вот код, который не работает.

        function myFunction() {
          if (SpreadsheetApp.getActive().getActiveSheet().getRange('E1').getFilter() == null) {
            var spreadsheet = SpreadsheetApp.getActive();
            var criteria = SpreadsheetApp.newFilterCriteria()
            .whenCellNotEmpty()
            .build();
            spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(5, criteria);
            spreadsheet.getRange('E1').activate();
            spreadsheet.getCurrentCell().offset(2, 0).activate();
          }
          else {
            var spreadsheet = SpreadsheetApp.getActive();
            var criteria = SpreadsheetApp.newFilterCriteria()
            .build();
            spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(5, criteria);
            spreadsheet.getRange('B1').activate();
            spreadsheet.getCurrentCell().offset(2, 0).activate();
          }
        }

1 Ответ

1 голос
/ 23 марта 2020

Чтобы убедиться, что фильтр содержит ColumnFilterCriteria в столбце E

Измените строку

if (SpreadsheetApp.getActive().getActiveSheet().getRange('E1').getFilter() == null) 

на

  if (SpreadsheetApp.getActive().getActiveSheet().getFilter().getColumnFilterCriteria(5) == null) {

Объяснение:

Если фильтр применяется ко всей электронной таблице / диапазону данных, включая столбец E - getFilter() == null) никогда не будет выполнен, даже если для столбца E. отсутствуют критерии фильтра.

Вместо этого необходимо использовать метод getColumnFilterCriteria(5), который либо вернет вам критерии фильтра o null.

...