Filter

Filter memungkinkan Anda mengurutkan dan memfilter data yang Anda lihat saat melihat spreadsheet. Filter tidak mengubah nilai data dalam 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 antaranya kapan pun Anda mau.

Berikut adalah beberapa contoh kasus penggunaan filter:

  • Mengurutkan data menurut kolom tertentu. Misalnya, urutkan data pengguna berdasarkan nama belakang.
  • 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 "ditutup".

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 Anda ingin mengaktifkan kembali filter yang sama, Anda harus menyetel kriteria lagi.

Mengelola filter dasar

Untuk menyetel 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 masker 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 tampilan dalam satu waktu.

Berikut adalah beberapa contoh kasus penggunaan untuk tampilan filter:

  • Anda memiliki beberapa filter berbeda yang ingin Anda gunakan saat melihat data.
  • Anda tidak memiliki akses edit ke spreadsheet, tetapi Anda 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 secara 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 masker 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 selebihnya dari dokumen ini merujuk pada tabel data penjualan contoh 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 1/3/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 2/7/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 yang akan diterapkan pengurutan.

Contoh kode berikut menunjukkan spesifikasi pengurutan:

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

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

Tabel 2. Data penjualan 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 2/7/2016
4 Wheel W-24 $20,50 4 Barat Beth 1/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 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 apa yang ditampilkan atau disembunyikan dalam filter dasar atau tampilan filter. Setiap kriteria bergantung pada nilai dalam kolom tertentu. Anda memberikan 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 dapat ditampilkan. Kondisi tidak menggantikan hiddenValues. Jika nilai tercantum di hiddenValues, semua kecocokan untuk nilai tetap disembunyikan.

Contoh kode berikut menunjukkan peta kriteria filter:

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

Jika 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 1/3/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 memperbarui 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")