Filter

Filter memungkinkan Anda mengurutkan dan memfilter data yang Anda lihat saat melihat spreadsheet. Filter tidak mengubah nilai data di spreadsheet Anda. Anda dapat menggunakan filter untuk menyembunyikan atau mengurutkan informasi untuk sementara. Data yang cocok dengan kriteria filter yang ditentukan tidak akan muncul saat filter diaktifkan. Dengan tampilan filter, Anda juga dapat menyimpan filter bernama yang berbeda dan beralih di antara filter tersebut kapan saja Anda mau.

Berikut adalah beberapa contoh kasus penggunaan untuk filter:

  • Mengurutkan data menurut kolom tertentu. Misalnya, urutkan data pengguna menurut nama akhir.
  • Menyembunyikan data yang memenuhi kondisi tertentu. Misalnya, sembunyikan semua data yang lebih lama dari 2 tahun.
  • Menyembunyikan data yang cocok dengan nilai tertentu. Misalnya, sembunyikan semua masalah dengan status "tertutup".

Filter dasar

BasicFilter untuk spreadsheet adalah filter default yang diterapkan setiap kali seseorang melihat spreadsheet. Spreadsheet dapat memiliki satu filter dasar per sheet. Anda dapat menonaktifkan filter dasar dengan menghapusnya. Tindakan ini akan menghapus filter dan semua setelannya dari spreadsheet. Jika ingin mengaktifkan kembali filter yang sama, Anda harus menetapkan kriteria lagi.

Mengelola filter dasar

Untuk menetapkan atau menghapus filter dasar, gunakan metode spreadsheets.batchUpdate dengan jenis permintaan yang sesuai:

Untuk mencantumkan filter dasar, gunakan metode spreadsheets.get dan tetapkan parameter URL fields ke sheets/basicFilter. Contoh kode spreadsheets.get berikut menunjukkan URL Google Spreadsheet dengan mask kolom:

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

Filter tampilan

FilterView adalah filter bernama yang dapat Anda nonaktifkan dan aktifkan kapan saja. Spreadsheet dapat memiliki beberapa tampilan filter, tetapi Anda hanya dapat menerapkan satu filter dalam satu waktu.

Berikut adalah beberapa contoh kasus penggunaan untuk tampilan filter:

  • Anda memiliki beberapa filter yang berbeda yang ingin Anda alihkan saat melihat data.
  • Anda tidak memiliki akses edit ke spreadsheet, tetapi masih ingin menerapkan filter. Dalam hal ini, Anda dapat membuat tampilan filter sementara yang hanya dapat dilihat oleh Anda.
  • Anda ingin setiap orang yang Anda ajak berbagi spreadsheet melihat data dengan cara yang berbeda. Anda dapat menentukan tampilan filter yang ingin diterapkan dengan memberikan spreadsheetId dan filterViewId di URL spreadsheet. Untuk melakukannya, gunakan filterViewId yang ditampilkan dalam respons saat Anda membuat tampilan filter.

    Contoh kode berikut menunjukkan URL Google Spreadsheet dengan tampilan filter:

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

Mengelola tampilan filter

Untuk membuat, menduplikasi, mengubah, atau menghapus tampilan filter, gunakan metode spreadsheets.batchUpdate dengan jenis permintaan yang sesuai:

Untuk mencantumkan semua tampilan filter, gunakan metode spreadsheets.get dan tetapkan parameter URL fields ke sheets/filterViews. Contoh kode spreadsheets.get berikut menunjukkan URL Google Spreadsheet dengan mask kolom:

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

Representasi filter

Contoh kode berikut menunjukkan representasi JSON untuk objek FilterView. Objek BasicFilter sama, kecuali tidak memiliki kolom filterViewId dan title, dan tidak dapat menggunakan rentang bernama.

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

Contoh data

Bagian lain dari dokumen ini mereferensikan contoh tabel data penjualan di bawah:

Tabel 1. Contoh data penjualan
A B C D E F G
1 Kategori Item Nomor Model Biaya Kuantitas Wilayah Staf Penjualan Tanggal Pengiriman
2 Wheel W-24 $20,50 4 Barat Beth 3/1/2016
3 Pintu D-01X $15,00 2 Selatan Amir 15/3/2016
4 Bingkai FR-0B1 $34,00 8 Timur Hannah 12/3/2016
5 Panel P-034 $6,00 4 Utara Devyn 15/3/2016
6 Panel P-052 $11,50 7 Timur Erik 16/5/2016
7 Wheel W-24 $20,50 11 Selatan Sheldon 30/4/2016
8 Mesin ENG-0161 $330,00 2 Utara Jessie 7/2/2016

Spesifikasi pengurutan

Filter dapat memiliki beberapa spesifikasi pengurutan. Spesifikasi ini menentukan cara mengurutkan data dan diterapkan dalam urutan yang ditentukan. Atribut SortSpec.dimensionIndex menentukan indeks kolom tempat pengurutan harus diterapkan.

Contoh kode berikut menunjukkan spesifikasi pengurutan:

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

Saat diterapkan ke contoh data penjualan, spesifikasi ini akan mengurutkan menurut "Jumlah" terlebih dahulu, lalu, jika 2 baris memiliki jumlah yang sama, menurut "Tanggal Pengiriman".

Tabel 2. Data penjualan yang diurutkan menurut 2 kolom
A B C D E F G
1 Kategori Item Nomor Model Biaya Kuantitas Wilayah Staf Penjualan Tanggal Pengiriman
2 Pintu D-01X $15,00 2 Selatan Amir 15/3/2016
3 Mesin ENG-0161 $330,00 2 Utara Jessie 7/2/2016
4 Wheel W-24 $20,50 4 Barat Beth 3/1/2016
5 Panel P-034 $6,00 4 Utara Devyn 15/3/2016
6 Panel P-052 $11,50 7 Timur Erik 16/5/2016
7 Bingkai FR-0B1 $34,00 8 Timur Hannah 12/3/2016
8 Wheel W-24 $20,50 11 Selatan Sheldon 30/4/2016

Kriteria filter

Metode FilterCriteria menentukan data spreadsheet yang ditampilkan atau disembunyikan dalam filter dasar atau tampilan filter. Setiap kriteria bergantung pada nilai dalam kolom tertentu. Anda menyediakan kriteria filter sebagai peta dengan kunci adalah indeks kolom, dan nilai adalah kriteria.

Untuk kriteria yang ditentukan menggunakan condition boolean, kondisinya harus True agar nilai ditampilkan. Kondisi tidak mengganti hiddenValues. Jika nilai dicantumkan di bagian hiddenValues, semua kecocokan untuk nilai tersebut masih disembunyikan.

Contoh kode berikut menunjukkan peta kriteria filter:

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

Saat diterapkan ke contoh data penjualan, kriteria ini hanya menampilkan baris dengan "Kategori Item" bukan "Panel", dan "Tanggal Pengiriman" sebelum 30 April 2016.

Tabel 3. Data penjualan menggunakan kriteria filter
A B C D E F G
1 Kategori Item Nomor Model Biaya Kuantitas Wilayah Staf Penjualan Tanggal Pengiriman
2 Wheel W-24 $20,50 4 Barat Beth 3/1/2016
3 Pintu D-01X $15,00 2 Selatan Amir 15/3/2016
4 Bingkai FR-0B1 $34,00 8 Timur Hannah 12/3/2016

Contoh

Contoh kode berikut menunjukkan cara membuat tampilan filter, menduplikasinya, lalu mengupdate versi duplikat menggunakan contoh data penjualan di atas.

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