Filtreler

Filtreler, bir e-tabloyu görüntülerken gördüğünüz verileri sıralamanıza ve filtrelemenize olanak tanır. Filtreler, e-tablonuzdaki veri değerlerini değiştirmez. Bilgileri geçici olarak gizlemek veya sıralamak için filtreleri kullanabilirsiniz. Belirtilen filtre ölçütleriyle eşleşen veriler, filtre etkinken görünmez. Filtre görünümleri ile farklı adlandırılmış filtreleri de kaydedebilir ve istediğiniz zaman bunlar arasında geçiş yapabilirsiniz.

Aşağıda, filtrelere ilişkin bazı örnek kullanım alanları verilmiştir:

  • Verileri belirli bir sütuna göre sıralayın. Örneğin, kullanıcı kayıtlarını soyadına göre sıralayın.
  • Belirli bir koşulu karşılayan verileri gizleme Örneğin, 2 yıldan eski tüm kayıtları gizleyebilirsiniz.
  • Belirli bir değerle eşleşen verileri gizleme. Örneğin, durumu "kapalı" olan tüm sorunları gizleyin.

Temel filtre

Bir e-tablonun BasicFilter, e-tabloyu görüntüleyen herkes için uygulanan varsayılan filtredir. Bir e-tabloda her sayfa için bir temel filtre olabilir. Temel filtreyi temizleyerek devre dışı bırakabilirsiniz. Bu işlem, filtreyi ve tüm ayarlarını e-tablodan kaldırır. Aynı filtreyi tekrar etkinleştirmek isterseniz ölçütleri yeniden ayarlamanız gerekir.

Temel filtreyi yönetme

Temel filtreyi ayarlamak veya temizlemek için uygun istek türüyle birlikte spreadsheets.batchUpdate yöntemini kullanın:

Temel filtreyi listelemek için spreadsheets.get yöntemini kullanın ve fields URL parametresini sheets/basicFilter olarak ayarlayın. Aşağıdaki spreadsheets.get kod örneğinde, alan maskesi içeren bir Google E-Tablolar URL'si gösterilmektedir:

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

Filtre görünümleri

FilterView istediğiniz zaman kapatıp açabileceğiniz, adlandırılmış bir filtredir. Bir e-tabloda birden fazla filtre görünümü olabilir ancak aynı anda yalnızca birini uygulayabilirsiniz.

Aşağıda, filtre görünümleriyle ilgili bazı örnek kullanım alanları verilmiştir:

  • Verileri görüntülerken aralarında geçiş yapmak istediğiniz birkaç farklı filtreniz var.
  • Bir e-tabloya düzenleme erişiminiz yok ancak yine de filtre uygulamak istiyorsunuz. Bu durumda, yalnızca sizin görebileceğiniz geçici bir filtre görünümü oluşturabilirsiniz.
  • E-tablonuzu paylaştığınız her kişinin verileri farklı şekilde görüntülemesini istiyorsanız. E-tablo URL'sinde spreadsheetId ve filterViewId değerlerini sağlayarak uygulamak istediğiniz filtre görünümünü belirtebilirsiniz. Bunu yapmak için filtre görünümünü oluştururken yanıtta döndürülen filterViewId öğesini kullanın.

    Aşağıdaki kod örneğinde, filtre görünümü içeren bir Google E-Tablolar URL'si gösterilmektedir:

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

Filtre görünümlerini yönetme

Filtre görünümleri oluşturmak, çoğaltmak, değiştirmek veya silmek için uygun istek türüne sahip spreadsheets.batchUpdate yöntemini kullanın:

Tüm filtre görünümlerinizi listelemek için spreadsheets.get yöntemini kullanın ve fields URL parametresini sheets/filterViews olarak ayarlayın. Aşağıdaki spreadsheets.get kod örneğinde, alan maskesi içeren bir Google E-Tablolar URL'si gösterilmektedir:

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

Filtre gösterimi

Aşağıdaki kod örneğinde, bir FilterView nesnesinin JSON gösterimi yer almaktadır. BasicFilter nesnesi, filterViewId ve title alanlarının olmaması ve adlandırılmış aralık kullanamaması dışında aynıdır.

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

Örnek veriler

Bu belgenin geri kalanında, aşağıdaki örnek satış verileri tablosuna referans verilmektedir:

Tablo 1. Örnek satış verileri
A B C D E F G
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Kargo Tarihi
2 Tekerlek W-24 20,50 ABD doları 4 Batı Beth 01.03.2016
3 Kapı D-01X 15 TL 2 Güney Amir 15.03.2016
4 Çerçeve FR-0B1 34,00 ABD doları 8 Doğu Hannah 12.03.2016
5 Panel P-034 6,00 ABD doları 4 Kuzey Devyn 15.03.2016
6 Panel P-052 11,50 ABD doları 7 Doğu Erik 16.05.2016
7 Tekerlek W-24 20,50 ABD doları 11 Güney Sheldon 30.04.2016
8 Motor ENG-0161 $330,00 2 Kuzey Jessie 02.07.2016

Sıralama özellikleri

Bir filtrede birden fazla sıralama özelliği olabilir. Bu özellikler, verilerin nasıl sıralanacağını belirler ve belirtilen sırayla uygulanır. SortSpec.dimensionIndex özelliği, sıralamanın uygulanması gereken sütun dizinini belirtir.

Aşağıdaki kod örneğinde bir sıralama belirtimi gösterilmektedir:

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

Bu spesifikasyon, örnek satış verilerine uygulandığında önce "Miktar"a göre sıralama yapar. Ardından, 2 satırın miktarı aynıysa "Gönderim Tarihi"ne göre sıralama yapar.

Tablo 2. Satış verileri 2 sütuna göre sıralanmış
A B C D E F G
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Kargo Tarihi
2 Kapı D-01X 15 TL 2 Güney Amir 15.03.2016
3 Motor ENG-0161 $330,00 2 Kuzey Jessie 02.07.2016
4 Tekerlek W-24 20,50 ABD doları 4 Batı Beth 01.03.2016
5 Panel P-034 6,00 ABD doları 4 Kuzey Devyn 15.03.2016
6 Panel P-052 11,50 ABD doları 7 Doğu Erik 16.05.2016
7 Çerçeve FR-0B1 34,00 ABD doları 8 Doğu Hannah 12.03.2016
8 Tekerlek W-24 20,50 ABD doları 11 Güney Sheldon 30.04.2016

Filtre ölçütleri

FilterCriteria yöntemi, temel filtrede veya filtre görünümünde hangi e-tablo verilerinin gösterileceğini ya da gizleneceğini belirler. Her ölçüt, belirli bir sütundaki değerlere bağlıdır. Filtre ölçütlerini, anahtarların sütun dizinleri ve değerlerin ölçütler olduğu bir harita olarak sağlarsınız.

Boole condition kullanılarak belirtilen ölçütler için değerlerin gösterilmesi amacıyla koşul True olmalıdır. Koşul, hiddenValues değerini geçersiz kılmaz. Bir değer hiddenValues altında listeleniyorsa değerle ilgili tüm eşleşmeler gizlenmeye devam eder.

Aşağıdaki kod örneğinde bir filtre ölçütü haritası gösterilmektedir:

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

Örnek satış verilerine uygulandığında bu ölçüt yalnızca "Öğe Kategorisi"nin "Panel" olmadığı ve "Kargo Tarihi"nin 30 Nisan 2016'dan önce olduğu satırları gösterir.

Tablo 3. Filtre ölçütlerini kullanan satış verileri
A B C D E F G
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Kargo Tarihi
2 Tekerlek W-24 20,50 ABD doları 4 Batı Beth 01.03.2016
3 Kapı D-01X 15 TL 2 Güney Amir 15.03.2016
4 Çerçeve FR-0B1 34,00 ABD doları 8 Doğu Hannah 12.03.2016

Örnek

Aşağıdaki kod örneğinde, filtre görünümünün nasıl oluşturulacağı, nasıl kopyalanacağı ve ardından yukarıdaki örnek satış verileri kullanılarak kopyalanan sürümün nasıl güncelleneceği gösterilmektedir.

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