Filtros

Os filtros permitem que você classifique e filtre os dados que você vê quando visualiza um planilha. Os filtros não alteram os valores dos dados na planilha. Você pode usar filtros para ocultar ou classificar informações temporariamente. Dados que correspondem ao Os critérios de filtro especificados não aparecem enquanto o filtro está Com as visualizações com filtro, também é possível salvar diferentes nomes filtros de anúncios e alternar entre eles sempre que quiser.

Confira a seguir alguns exemplos de casos de uso de filtros:

  • classificar dados por uma coluna específica; Por exemplo, classificar os registros do usuário pela data nome.
  • Oculte dados que atendam a uma condição específica. Por exemplo, ocultar todos os registros com mais de dois anos.
  • Oculta dados que correspondem a um determinado valor. Por exemplo, oculte todos os problemas com status "fechado".

Filtro básico

A BasicFilter de uma planilha é o filtro padrão, que é aplicado sempre que alguém visualiza o planilha. Uma planilha pode ter um filtro básico por planilha. Para desativar o filtro básico, limpando-o. Isso remove o filtro e todas as configurações dele da planilha. Se você quiser reativar o mesmo filtro, precisará definir os critérios outra vez.

Gerenciar o filtro básico

Para definir ou limpar o filtro básico, use o spreadsheets.batchUpdate com o tipo de solicitação apropriado:

Para listar o filtro básico, use o método spreadsheets.get e Defina o parâmetro de URL fields como sheets/basicFilter. O seguinte O exemplo de código spreadsheets.get mostra um URL do Planilhas Google com um campo máscara:

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets/basicFilter)

Visualizações com filtro

Uma FilterView é um filtro nomeado que você pode ativar e desativar sempre que quiser. Uma planilha Você pode ter várias visualizações de filtro, mas só é possível aplicar uma de cada vez.

Confira a seguir alguns exemplos de casos de uso de visualizações com filtro:

  • Você tem vários filtros diferentes entre os quais deseja alternar quando visualizar os dados.
  • Você não tem acesso para editar a uma planilha, mas ainda quer aplicar uma filtro. Nesse caso, você pode criar uma visualização de filtro temporária que seja apenas visíveis para você.
  • Você quer que cada pessoa com quem compartilhar sua planilha visualize os dados de maneiras diferentes. Para especificar a visualização com filtro que você quer aplicar, forneça os objetos spreadsheetId e filterViewId no URL da planilha. Para fazer isso, use o filterViewId retornados na resposta quando você cria a visualização com filtro.

    O exemplo de código a seguir mostra um URL das Planilhas Google com uma visualização de filtro:

    https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0&fvid=FILTER_VIEW_ID

Gerenciar visualizações com filtro

Para criar, duplicar, modificar ou excluir visualizações com filtro, use o spreadsheets.batchUpdate com o tipo de solicitação apropriado:

Para listar todas as visualizações com filtro, use o método spreadsheets.get e Defina o parâmetro de URL fields como sheets/filterViews. O seguinte O exemplo de código spreadsheets.get mostra um URL do Planilhas Google com um campo máscara:

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets/filterViews)

Filtrar representação

O exemplo de código a seguir mostra a representação JSON para um FilterView objeto. A BasicFilter é o mesmo, mas não tem os campos filterViewId e title. e não pode usar um intervalo nomeado.

{
  "filterViewId": number,
  "title": string,
  "range": {
    object(GridRange)
  },
  "namedRangeId": string,
  "sortSpecs": [
    {
      object(SortSpec)
    }
  ],
  "criteria": {
    string: {
      object(FilterCriteria)
    },
    ...
  }
}

Exemplo

O restante deste documento faz referência ao exemplo de tabela de dados de vendas abaixo:

:
Tabela 1. Exemplos de dados de vendas
A B C D E F G
1 Categoria do item Número do modelo Custo Quantidade Região Vendedor Data de envio
2 Wheel W-24 US$ 20,50 4 Oeste Bete 01/03/2016
3 Porta D-01X US$ 15,00 2 Sul Amir 15/03/2016
4 Quadro FR-0B1 US$ 34,00 8 Leste Hannah 12/03/2016
5 Painel P-034 US$ 6,00 4 Norte Devyn 15/03/2016
6 Painel P-052 US$ 11,50 7 Leste Erik 16/05/2016
7 Wheel W-24 US$ 20,50 11 Sul Sheldon 30/04/2016
8 Mecanismo ENG-0161 US$ 330,00 2 Norte Jéssica 02/07/2016

Classificar especificações

Um filtro pode ter várias especificações de classificação. Essas especificações determinam como classificar os dados e como são aplicados na ordem especificada. A SortSpec.dimensionIndex especifica o índice da coluna ao qual a classificação deve ser aplicada.

O exemplo de código a seguir mostra uma especificação de classificação:

[
  {
    "dimensionIndex": 3,
    "sortOrder": "ASCENDING"
  },
  {
    "dimensionIndex": 6,
    "sortOrder": "ASCENDING"
  }
]

Quando aplicada aos exemplos de dados de vendas, esta especificação classifica por "Quantidade" primeiro e, se 2 linhas tiverem a mesma quantidade, por "Enviar Data".

:
Tabela 2. Dados de vendas classificados em 2 colunas
A B C D E F G
1 Categoria do item Número do modelo Custo Quantidade Região Vendedor Data de envio
2 Porta D-01X US$ 15,00 2 Sul Amir 15/03/2016
3 Mecanismo ENG-0161 US$ 330,00 2 Norte Jéssica 02/07/2016
4 Wheel W-24 US$ 20,50 4 Oeste Bete 01/03/2016
5 Painel P-034 US$ 6,00 4 Norte Devyn 15/03/2016
6 Painel P-052 US$ 11,50 7 Leste Erik 16/05/2016
7 Quadro FR-0B1 US$ 34,00 8 Leste Hannah 12/03/2016
8 Wheel W-24 US$ 20,50 11 Sul Sheldon 30/04/2016

Critérios de filtro

A FilterCriteria determina quais dados da planilha são mostrados ou ocultos em um filtro básico ou visualização com filtro. Cada critério depende dos valores em uma coluna específica. Você forneça os critérios de filtro como um mapa em que as chaves são os índices das colunas e os valores são os critérios.

Para os critérios especificados usando um condition booleano, a condição precisa ser True. dos valores a serem mostrados. A condição não substitui hiddenValues. Se um valor seja listado em hiddenValues, todas as correspondências de um valor ainda estarão ocultas.

O exemplo de código a seguir mostra um mapa de critérios de filtro:

{
  0: {
    'hiddenValues': ['Panel']
  },
  6: {
    'condition': {
      'type': 'DATE_BEFORE',
      'values': {
        'userEnteredValue': '4/30/2016'
      }
    }
  }
}

Quando aplicado aos dados de vendas de exemplo, esse critério só mostra as linhas em que "Item Category" não é "Painel", e a "Data de envio" é anterior a 30 de abril de 2016.

:
Tabela 3. dados de vendas usando critérios de filtro
A B C D E F G
1 Categoria do item Número do modelo Custo Quantidade Região Vendedor Data de envio
2 Wheel W-24 US$ 20,50 4 Oeste Bete 01/03/2016
3 Porta D-01X US$ 15,00 2 Sul Amir 15/03/2016
4 Quadro FR-0B1 US$ 34,00 8 Leste Hannah 12/03/2016

Exemplo

O exemplo de código a seguir mostra como criar uma visualização de filtro, duplicá-la e Depois, atualize a versão duplicada usando os dados de vendas de exemplo. acima.

Python

sheets/snippets/sheets_filter_views.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def filter_views(spreadsheet_id):
  """
  Creates the batch_update the user has access to.
  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()
  # pylint: disable=maybe-no-member
  try:
    service = build("sheets", "v4", credentials=creds)

    my_range = {
        "sheetId": 0,
        "startRowIndex": 0,
        "startColumnIndex": 0,
    }
    addfilterviewrequest = {
        "addFilterView": {
            "filter": {
                "title": "Sample Filter",
                "range": my_range,
                "sortSpecs": [{
                    "dimensionIndex": 3,
                    "sortOrder": "DESCENDING",
                }],
                "criteria": {
                    0: {"hiddenValues": ["Panel"]},
                    6: {
                        "condition": {
                            "type": "DATE_BEFORE",
                            "values": {"userEnteredValue": "4/30/2016"},
                        }
                    },
                },
            }
        }
    }

    body = {"requests": [addfilterviewrequest]}
    addfilterviewresponse = (
        service.spreadsheets()
        .batchUpdate(spreadsheetId=spreadsheet_id, body=body)
        .execute()
    )

    duplicatefilterviewrequest = {
        "duplicateFilterView": {
            "filterId": addfilterviewresponse["replies"][0]["addFilterView"][
                "filter"
            ]["filterViewId"]
        }
    }

    body = {"requests": [duplicatefilterviewrequest]}
    duplicatefilterviewresponse = (
        service.spreadsheets()
        .batchUpdate(spreadsheetId=spreadsheet_id, body=body)
        .execute()
    )

    updatefilterviewrequest = {
        "updateFilterView": {
            "filter": {
                "filterViewId": duplicatefilterviewresponse["replies"][0][
                    "duplicateFilterView"
                ]["filter"]["filterViewId"],
                "title": "Updated Filter",
                "criteria": {
                    0: {},
                    3: {
                        "condition": {
                            "type": "NUMBER_GREATER",
                            "values": {"userEnteredValue": "5"},
                        }
                    },
                },
            },
            "fields": {"paths": ["criteria", "title"]},
        }
    }

    body = {"requests": [updatefilterviewrequest]}
    updatefilterviewresponse = (
        service.spreadsheets()
        .batchUpdate(spreadsheetId=spreadsheet_id, body=body)
        .execute()
    )
    print(str(updatefilterviewresponse))
  except HttpError as error:
    print(f"An error occurred: {error}")


if __name__ == "__main__":
  # Pass: spreadsheet_id
  filter_views("1CM29gwKIzeXsAppeNwrc8lbYaVMmUclprLuLYuHog4k")