Filter

Mit Filtern können Sie die Daten sortieren und filtern, die in einer Tabelle angezeigt werden. Durch Filter werden die Datenwerte in Ihrer Tabelle nicht geändert. Mit Filtern können Sie Informationen vorübergehend ausblenden oder sortieren. Daten, die den angegebenen Filterkriterien entsprechen, werden nicht angezeigt, solange der Filter aktiviert ist. Mit Filteransichten können Sie auch verschiedene benannte Filter speichern und jederzeit zwischen ihnen wechseln.

Hier einige Anwendungsfälle für Filter:

  • Daten nach einer bestimmten Spalte sortieren Sie können Nutzerdatensätze beispielsweise nach dem Nachnamen sortieren.
  • Daten ausblenden, die eine bestimmte Bedingung erfüllen Beispielsweise können Sie alle Einträge ausblenden, die älter als zwei Jahre sind.
  • Daten ausblenden, die mit einem bestimmten Wert übereinstimmen. Beispiel: Alle Probleme mit dem Status „Geschlossen“ ausblenden

Einfacher Filter

Das Symbol BasicFilter für eine Tabelle ist der Standardfilter, der angewendet wird, wenn jemand die Tabelle aufruft. Eine Tabelle kann einen einfachen Filter pro Tabelle enthalten. Sie können den einfachen Filter deaktivieren, indem Sie ihn löschen. Dadurch werden der Filter und alle zugehörigen Einstellungen aus der Tabelle entfernt. Wenn Sie denselben Filter wieder aktivieren möchten, müssen Sie die Kriterien noch einmal festlegen.

Einfachen Filter verwalten

Wenn Sie den grundlegenden Filter festlegen oder löschen möchten, verwenden Sie die Methode spreadsheets.batchUpdate mit dem entsprechenden Anfragetyp:

Wenn du den grundlegenden Filter auflisten möchtest, verwende die Methode spreadsheets.get und setze den URL-Parameter fields auf sheets/basicFilter. Das folgende spreadsheets.get-Codebeispiel zeigt eine Google Tabellen-URL mit einer Feldmaske:

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

Filteransichten

Ein FilterView ist ein benannter Filter, den Sie jederzeit deaktivieren und aktivieren können. Eine Tabelle kann mehrere Filteransichten haben, Sie können aber immer nur eine anwenden.

Hier einige Anwendungsfälle für Filteransichten:

  • Sie haben mehrere Filter, zwischen denen Sie beim Ansehen der Daten wechseln möchten.
  • Sie haben keinen Bearbeitungszugriff auf eine Tabelle, möchten aber trotzdem einen Filter anwenden. In diesem Fall können Sie eine vorübergehende Filteransicht erstellen, die nur für Sie sichtbar ist.
  • Sie möchten, dass jede Person, mit der Sie Ihre Tabelle teilen, die Daten unterschiedlich sieht. Sie können die gewünschte Filteransicht angeben, indem Sie spreadsheetId und filterViewId in die Tabellen-URL einfügen. Verwenden Sie dazu die filterViewId, die in der Antwort zurückgegeben wird, wenn Sie die Filteransicht erstellen.

    Das folgende Codebeispiel zeigt eine Google Tabellen-URL mit einer Filteransicht:

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

Filteransichten verwalten

Wenn Sie Filteransichten erstellen, duplizieren, ändern oder löschen möchten, verwenden Sie die Methode spreadsheets.batchUpdate mit dem entsprechenden Anfragetyp:

Wenn Sie alle Filteransichten auflisten möchten, verwenden Sie die Methode spreadsheets.get und legen Sie den URL-Parameter fields auf sheets/filterViews fest. Das folgende spreadsheets.get-Codebeispiel zeigt eine Google Tabellen-URL mit einer Feldmaske:

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

Filterdarstellung

Das folgende Codebeispiel zeigt die JSON-Darstellung eines FilterView-Objekts. Das BasicFilter-Objekt ist mit dem filterViewId-Objekt identisch, es fehlen jedoch die Felder filterViewId und title und es kann kein benannter Bereich verwendet werden.

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

Beispieldaten

Im Rest dieses Dokuments wird auf die folgende Beispieltabelle mit Verkaufsdaten verwiesen:

Tabelle 1 Beispiel für Verkaufsdaten
A B C D E F G
1 Artikelkategorie Modellnummer Kosten Menge Region Vertriebsmitarbeiter Versanddatum
2 Wheel Riesenrad W-24 20,50 $ 4 West Beth 01.03.2016
3 Tür D-01X 15,00 $ 2 Süd Amir 15.03.2016
4 Rahmen FR-0B1 34 $ 8 Ost Hannah 12.03.2016
5 Feld P-034 6,00 $ 4 Norden Devyn 15.03.2016
6 Feld P-052 11,50 $ 7 Ost Erik 16.05.2016
7 Wheel Riesenrad W-24 20,50 $ 11 Süd Sheldon 30.04.2016
8 Engine ENG-0161 330,00 $ 2 Norden Jessie 2. Juli 2016

Sortiervorgaben

Ein Filter kann mehrere Sortiervorgaben haben. Diese Spezifikationen legen fest, wie die Daten sortiert werden, und werden in der angegebenen Reihenfolge angewendet. Das SortSpec.dimensionIndex-Attribut gibt den Spaltenindex an, auf den die Sortierung angewendet werden soll.

Das folgende Codebeispiel zeigt eine Sortiervorgabe:

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

Wenn diese Angabe auf die Beispieldaten für Verkäufe angewendet wird, werden die Daten zuerst nach „Menge“ und dann, wenn zwei Zeilen dieselbe Menge haben, nach „Versanddatum“ sortiert.

Tabelle 2 Verkaufsdaten nach zwei Spalten sortiert
A B C D E F G
1 Artikelkategorie Modellnummer Kosten Menge Region Vertriebsmitarbeiter Versanddatum
2 Tür D-01X 15,00 $ 2 Süd Amir 15.03.2016
3 Engine ENG-0161 330,00 $ 2 Norden Jessie 2. Juli 2016
4 Wheel Riesenrad W-24 20,50 $ 4 West Beth 01.03.2016
5 Feld P-034 6,00 $ 4 Norden Devyn 15.03.2016
6 Feld P-052 11,50 $ 7 Ost Erik 16.05.2016
7 Rahmen FR-0B1 34 $ 8 Ost Hannah 12.03.2016
8 Wheel Riesenrad W-24 20,50 $ 11 Süd Sheldon 30.04.2016

Filterkriterien

Mit der Methode FilterCriteria wird festgelegt, welche Tabellendaten in einem einfachen Filter oder einer Filteransicht angezeigt oder ausgeblendet werden. Jedes Kriterium hängt von den Werten in einer bestimmten Spalte ab. Sie geben die Filterkriterien als Zuordnung an, wobei die Schlüssel die Spaltenindizes und die Werte die Kriterien sind.

Bei Kriterien, die mit einem booleschen condition angegeben werden, muss die Bedingung True sein, damit Werte angezeigt werden. Die Bedingung überschreibt hiddenValues nicht. Wenn ein Wert unter hiddenValues aufgeführt ist, werden alle Übereinstimmungen für einen Wert weiterhin ausgeblendet.

Das folgende Codebeispiel zeigt eine Filterkriterienkarte:

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

Wenn diese Kriterien auf die Beispieldaten zu Verkäufen angewendet werden, werden nur Zeilen angezeigt, bei denen die Artikelkategorie nicht „Panel“ ist und das Versanddatum vor dem 30. April 2016 liegt.

Table 3 Verkaufsdaten mit Filterkriterien
A B C D E F G
1 Artikelkategorie Modellnummer Kosten Menge Region Vertriebsmitarbeiter Versanddatum
2 Wheel Riesenrad W-24 20,50 $ 4 West Beth 01.03.2016
3 Tür D-01X 15,00 $ 2 Süd Amir 15.03.2016
4 Rahmen FR-0B1 34 $ 8 Ost Hannah 12.03.2016

Beispiel

Im folgenden Codebeispiel wird gezeigt, wie Sie eine Filteransicht erstellen, duplizieren und die duplizierte Version dann mit den oben genannten Beispielverkaufsdaten aktualisieren.

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")