Filter

Filter memungkinkan Anda mengurutkan dan memfilter data yang Anda lihat saat melihat {i>spreadsheet<i}. Filter tidak mengubah nilai data dalam {i>spreadsheet<i} 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 aktif. Dengan tampilan filter, Anda juga dapat menyimpan berbagai filter bernama dan beralih antar-filter kapan saja.

Berikut adalah beberapa contoh kasus penggunaan filter:

  • Mengurutkan data berdasarkan kolom tertentu. Misalnya, urutkan catatan pengguna berdasarkan nama belakang.
  • Menyembunyikan data yang memenuhi kondisi tertentu. Misalnya, sembunyikan semua catatan 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 orang 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 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 aktifkan dan nonaktifkan kapan saja. Spreadsheet dapat memiliki beberapa tampilan filter, tetapi Anda hanya dapat menerapkannya satu per satu.

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 masih ingin menerapkan filter. Dalam hal ini, Anda dapat membuat tampilan filter sementara yang hanya terlihat oleh Anda.
  • Anda ingin setiap orang yang diajak berbagi {i>spreadsheet<i} dapat melihat data secara berbeda. Anda dapat menentukan tampilan filter yang ingin diterapkan dengan memberikan spreadsheetId dan filterViewId dalam 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, memodifikasi, 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, tetapi objek ini 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 lainnya dari dokumen ini merujuk ke contoh tabel data penjualan di bawah ini:

Tabel 1. Contoh data penjualan
A B C D E F G
1 Kategori Item Nomor Model Biaya Jumlah Wilayah Staf Penjualan Tanggal Pengiriman
2 Wheel W-24 $20,50 4 Barat Bagas 1/3/2016
3 Pintu H-01X $15,00 2 Selatan Amir 15/3/2016
4 Bingkai FR-0B1 $34,00 8 Timur Hanna 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

Sebuah 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"
  }
]

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

Tabel 2. Data penjualan diurutkan menurut 2 kolom
A B C D E F G
1 Kategori Item Nomor Model Biaya Jumlah Wilayah Staf Penjualan Tanggal Pengiriman
2 Pintu H-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 Bagas 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 Hanna 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 memasukkan kriteria filter sebagai peta dengan kuncinya adalah indeks kolom, dan nilainya adalah kriterianya.

Untuk kriteria yang ditentukan menggunakan boolean condition, kondisi harus True agar nilai ditampilkan. Kondisi tidak mengganti hiddenValues. Jika nilai tercantum di hiddenValues, semua kecocokan untuk suatu nilai masih akan disembunyikan.

Contoh kode berikut menampilkan 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 "Item Category" 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 Jumlah Wilayah Staf Penjualan Tanggal Pengiriman
2 Wheel W-24 $20,50 4 Barat Bagas 1/3/2016
3 Pintu H-01X $15,00 2 Selatan Amir 15/3/2016
4 Bingkai FR-0B1 $34,00 8 Timur Hanna 12/3/2016

Contoh

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

Python

sheet/cuplikan/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")