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. Filtre açıkken belirtilen filtre ölçütleriyle eşleşen veriler görünmez. Filtre görünümleri sayesinde farklı filtreler kaydedebilir ve dilediğiniz zaman bunlar arasında geçiş yapabilirsiniz.

Filtrelerin bazı örnek kullanım alanları aşağıda verilmiştir:

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

Temel filtre

Bir e-tablonun BasicFilter, e-tabloyu görüntüleyen herkese uygulanan varsayılan filtredir. E-tablolarda 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 tekrar 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ğıdakispreadsheets.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, dilediğ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 bir filtre uygulayabilirsiniz.

Filtre görünümlerinin bazı örnek kullanım alanları aşağıda verilmiştir:

  • Verileri görüntülerken aralarında geçiş yapmak istediğiniz birkaç farklı filtreniz var.
  • 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 kullanıcının verileri farklı şekilde görüntülemesini istiyorsunuz. E-tablo URL'sine spreadsheetId ve filterViewId ekleyerek 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üne sahip 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üyle birlikte spreadsheets.batchUpdate yöntemini kullanın:

Tüm filtreleme görünümlerinizi listelemek için spreadsheets.get yöntemini kullanın ve fields URL parametresini sheets/filterViews olarak ayarlayın. Aşağıdakispreadsheets.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 temsili

Aşağıdaki kod örneğinde, bir FilterView nesnesinin JSON gösterimi gösterilmektedir. BasicFilter nesnesi, filterViewId ve title alanlarının bulunmaması 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 dokümanın geri kalanında aşağıdaki örnek satış verileri tablosuna referans verilmektedir:

Tablo 1. Örnek satış verileri
A B C D E F Y
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Gönderim Tarihi
2 Tekerlek W-24 20,50 ABD doları 4 Batı Beth 3/1/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 Handan 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 Erkan 16.05.2016
7 Tekerlek W-24 20,50 ABD doları 11 Güney Sheldon 30.04.2016
8 Motor ENG-0161 330,00 ABD doları 2 Kuzey Ceylan 2.07.2016

Özellikleri sıralama

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

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

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

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

Tablo 2. 2 sütuna göre sıralanmış satış verileri
A B C D E F Y
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Gönderim Tarihi
2 Kapı D-01X 15 TL 2 Güney Amir 15.03.2016
3 Motor ENG-0161 330,00 ABD doları 2 Kuzey Ceylan 2.07.2016
4 Tekerlek W-24 20,50 ABD doları 4 Batı Beth 3/1/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 Erkan 16.05.2016
7 Çerçeve FR-0B1 34,00 ABD doları 8 Doğu Handan 12.03.2016
8 Tekerlek W-24 20,50 ABD doları 11 Güney Sheldon 30.04.2016

Filtre ölçütü

FilterCriteria yöntemi, temel filtre 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çütlerde, değerlerin gösterilmesi için koşulun True olması gerekir. Koşul, hiddenValues değerini geçersiz kılmaz. Bir değer hiddenValues altında listeleniyorsa değere ait tüm eşleşmeler yine de gizli kalır.

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

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

Bu ölçüt, örnek satış verilerine uygulandığında yalnızca "Öğe Kategorisi"nin "Panel" olmadığı ve "Gönderim 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 Y
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Gönderim Tarihi
2 Tekerlek W-24 20,50 ABD doları 4 Batı Beth 3/1/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 Handan 12.03.2016

Örnek

Aşağıdaki kod örneğinde, filtre görünümünün nasıl oluşturulacağı, kopyalanacağı ve ardından kopyalanan sürümün yukarıdaki örnek satış verilerini kullanarak 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")