Этот документ посвящен использованию фильтров для сортировки и фильтрации данных, отображаемых в электронной таблице .
Фильтры позволяют сортировать и фильтровать данные, отображаемые в электронной таблице. Фильтры не изменяют значения данных в таблице. Вы можете использовать фильтры для временного скрытия или сортировки информации. Данные, соответствующие указанным критериям фильтра, не отображаются, пока фильтр активен. В режиме просмотра с фильтрами вы также можете сохранять различные именованные фильтры и переключаться между ними по своему усмотрению.
Для фильтрации данных, возвращаемых в запросе к API Google Sheets, используйте объект DataFilter . Дополнительную информацию см. в разделе «Чтение, запись и поиск метаданных» .
Варианты использования фильтра
Ниже приведены несколько примеров использования фильтров:
- Сортировка данных по определенному столбцу. Например, сортировка записей пользователей по фамилии.
- Скрыть данные, отвечающие определенному условию. Например, скрыть все записи старше двух лет.
- Скрыть данные, соответствующие определенному значению. Например, скрыть все задачи со статусом «закрыто».
Базовый фильтр
Объект BasicFilter для электронной таблицы — это фильтр по умолчанию, который применяется при каждом просмотре таблицы. В электронной таблице может быть только один базовый фильтр на лист . Вы можете отключить базовый фильтр, очистив его. Это удалит фильтр и все его настройки из электронной таблицы. Если вы хотите снова включить тот же фильтр, вам необходимо заново установить критерии.
Управление базовым фильтром
Для установки или снятия базового фильтра используйте метод spreadsheets.batchUpdate с соответствующим типом запроса:
- Для установки базового фильтра используйте метод
SetBasicFilterRequest. - Для сброса базового фильтра используйте метод
ClearBasicFilterRequest.
Чтобы отобразить основной фильтр, используйте метод spreadsheets.get и установите параметр URL fields в sheets/basicFilter . В следующем примере кода spreadsheets.get показан URL-адрес Google Sheets с маской поля :
GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets/basicFilter
Фильтрация представлений
FilterView — это именованный фильтр, который можно включать и выключать по своему усмотрению. На листе можно сохранить несколько представлений фильтров, но одновременно можно применять только одно. Лист также может содержать как базовый фильтр, так и несколько представлений фильтров, но одновременное применение обоих к одному и тому же диапазону данных невозможно.
Варианты использования фильтрованного представления
Ниже приведены несколько примеров использования представлений с фильтрами:
- При просмотре данных вам нужно переключаться между несколькими различными фильтрами.
- У вас нет прав на редактирование электронной таблицы, но вы все равно хотите применить фильтр. В этом случае вы можете создать временное представление фильтра, видимое только вам.
Вы хотите, чтобы каждый, с кем вы делитесь своей электронной таблицей, видел данные по-разному. Вы можете указать желаемый фильтр, указав
spreadsheetIdиfilterViewIdв URL-адресе электронной таблицы. Для этого используйтеfilterViewId, возвращаемый в ответе при создании фильтра.Приведённый ниже пример кода демонстрирует URL-адрес Google Sheets с представлением фильтра:
https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0&fvid=FILTER_VIEW_ID
Управление фильтрами представлений
Для создания, дублирования, изменения или удаления представлений фильтров используйте метод spreadsheets.batchUpdate с соответствующим типом запроса:
- Для создания представления фильтра используйте метод
AddFilterViewRequest. - Для создания копии представления фильтра используйте метод
DuplicateFilterViewRequest. - Для изменения свойств представления фильтра используйте метод
UpdateFilterViewRequest. - Для удаления представления фильтра используйте метод
DeleteFilterViewRequest.
Чтобы отобразить все ваши представления фильтров, используйте метод spreadsheets.get и установите параметр URL fields в значение sheets/filterViews . Следующий пример кода spreadsheets.get показывает URL-адрес таблиц с маской поля :
GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets/filterViews
JSON-представление фильтра
Приведённый ниже пример кода демонстрирует JSON-представление объекта FilterView . Объект BasicFilter аналогичен, за исключением того, что в нём отсутствуют поля filterViewId и title , и он не может использовать именованный диапазон.
{
"filterViewId": number,
"title": string,
"range": {
object(GridRange)
},
"namedRangeId": string,
"sortSpecs": [
{
object(SortSpec)
}
],
"criteria": {
string: {
object(FilterCriteria)
},
...
}
}
Пример данных о продажах
В остальной части документа приводится ссылка на следующую таблицу с примерами данных о продажах:
| А | Б | С | Д | Е | Ф | Г | |
| 1 | Категория товара | Номер модели | Расходы | Количество | Область | Продавец | Дата отгрузки |
| 2 | Колесо | В-24 | 20,50 долларов | 4 | Запад | Бет | 01.03.2016 |
| 3 | Дверь | Д-01X | 15,00 долларов | 2 | Юг | Амир | 15.03.2016 |
| 4 | Рамка | FR-0B1 | 34,00 долларов | 8 | Восток | Ханна | 12.03.2016 |
| 5 | Панель | П-034 | 6,00 долларов | 4 | Север | Девин | 15.03.2016 |
| 6 | Панель | П-052 | 11,50 долларов | 7 | Восток | Эрик | 16.05.2016 |
| 7 | Колесо | В-24 | 20,50 долларов | 11 | Юг | Шелдон | 30.04.2016 |
| 8 | Двигатель | ENG-0161 | 330,00 долларов США | 2 | Север | Джесси | 07.02.2016 |
Спецификации сортировки
Фильтр может иметь несколько спецификаций сортировки. Эти спецификации определяют способ сортировки данных и применяются в указанном порядке. Атрибут SortSpec.dimensionIndex указывает индекс столбца, к которому должна применяться сортировка.
Следующий пример кода демонстрирует спецификацию сортировки:
[
{
"dimensionIndex": 3,
"sortOrder": "ASCENDING"
},
{
"dimensionIndex": 6,
"sortOrder": "ASCENDING"
}
]
При применении к выборочным данным о продажах эта спецификация сначала сортирует данные по столбцу «Количество», а затем, если в двух строках указано одинаковое количество, по столбцу «Дата отгрузки».
| А | Б | С | Д | Е | Ф | Г | |
| 1 | Категория товара | Номер модели | Расходы | Количество | Область | Продавец | Дата отгрузки |
| 2 | Дверь | Д-01X | 15,00 долларов | 2 | Юг | Амир | 15.03.2016 |
| 3 | Двигатель | ENG-0161 | 330,00 долларов США | 2 | Север | Джесси | 07.02.2016 |
| 4 | Колесо | В-24 | 20,50 долларов | 4 | Запад | Бет | 01.03.2016 |
| 5 | Панель | П-034 | 6,00 долларов | 4 | Север | Девин | 15.03.2016 |
| 6 | Панель | П-052 | 11,50 долларов | 7 | Восток | Эрик | 16.05.2016 |
| 7 | Рамка | FR-0B1 | 34,00 долларов | 8 | Восток | Ханна | 12.03.2016 |
| 8 | Колесо | В-24 | 20,50 долларов | 11 | Юг | Шелдон | 30.04.2016 |
Критерии фильтрации
Объект FilterCriteria определяет, какие данные электронной таблицы отображаются или скрываются в базовом фильтре или представлении фильтра. Каждый критерий зависит от значений в конкретном столбце. Критерии фильтра задаются в виде карты, где ключами являются индексы столбцов, а значениями — сами критерии.
Для критериев, заданных с помощью логического condition , условие должно быть true , чтобы значения отображались. Условие не переопределяет hiddenValues . Если значение указано в hiddenValues , все совпадения с этим значением по-прежнему будут скрыты.
В следующем примере кода показана карта критериев фильтрации:
{
0: {
'hiddenValues': ['Panel']
},
6: {
'condition': {
'type': 'DATE_BEFORE',
'values': {
'userEnteredValue': '4/30/2016'
}
}
}
}
Применение этого критерия к выборочным данным о продажах позволяет отображать только строки, в которых значение столбца «Категория товара» не равно «Panel», и где значение столбца «Дата отгрузки» предшествует «30 апреля 2016 г.».
| А | Б | С | Д | Е | Ф | Г | |
| 1 | Категория товара | Номер модели | Расходы | Количество | Область | Продавец | Дата отгрузки |
| 2 | Колесо | В-24 | 20,50 долларов | 4 | Запад | Бет | 01.03.2016 |
| 3 | Дверь | Д-01X | 15,00 долларов | 2 | Юг | Амир | 15.03.2016 |
| 4 | Рамка | FR-0B1 | 34,00 долларов | 8 | Восток | Ханна | 12.03.2016 |
Пример кода для отображения фильтра
Приведенный ниже пример кода показывает, как создать представление фильтра, продублировать его, а затем обновить дубликат, используя пример данных о продажах .