Filtreler

Filtreler, bir e-tabloyu görüntülediğinizde 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 açıkken görünmez. Ayrıca filtre görünümlerini kullanarak farklı adlandırılmış filtreler 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ıralayabilirsiniz. Örneğin, kullanıcı kayıtlarını soyadına göre sıralayın.
  • Belirli bir koşulu karşılayan verileri gizler. Örneğin, 2 yıldan eski tüm kayıtları gizleyebilirsiniz.
  • Belirli bir değerle eşleşen verileri gizleyin. Örneğin, "kapalı" durumuyla ilgili tüm sorunları gizleyebilirsiniz.

Temel filtre

Bir e-tablonun BasicFilter öğesi, bir kullanıcı e-tabloyu görüntülediğinde uygulanan varsayılan filtredir. Bir e-tabloda sayfa başına 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 açmak isterseniz ölçütleri yeniden ayarlamanız gerekir.

Temel filtreyi yönetme

Temel filtreyi ayarlamak veya temizlemek için uygun istek türüyle 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 olan 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-tablonun birden fazla filtre görünümü olabilir, ancak aynı anda yalnızca bir görünüm uygulayabilirsiniz.

Aşağıda, filtre görünümlerinin bazı kullanım örnekleri verilmiştir:

  • Verileri görüntülerken aralarında geçiş yapmak istediğiniz birkaç farklı filtreniz vardır.
  • E-tablo için 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ı bir şekilde görüntülemesini istersiniz. E-tablo URL'sine spreadsheetId ve filterViewId değerlerini girerek uygulamak istediğiniz filtre görünümünü belirtebilirsiniz. Bunu yapmak için, filtre görünümünü oluşturduğunuzda 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ümlerini oluşturmak, çoğaltmak, değiştirmek veya silmek için uygun istek türüyle 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 olan 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 gösterilmektedir. BasicFilter nesnesi aynıdır ancak filterViewId ve title alanları yoktur ve adlandırılmış aralık kullanamaz.

{
  "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 tablosu referans verilmiştir:

Tablo 1. Örnek satış verileri
CEVAP B C D E F G
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Gönderim Tarihi
2 Dönme dolap W-24 20,50 TL 4 Batı Banu 01.03.2016
3 Kapı D-01X 15 ABD doları 2 Güney Emir 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 Devin 15.03.2016
6 Panel P-052 11,50 TL 7 Doğu Erik 16.05.2016
7 Dönme dolap W-24 20,50 TL 11 Güney Sheldon'dan daha fazla içerik 30.04.2016
8 Motor ENG-0161 330,00 ABD doları 2 Kuzey Jale 02.07.2016

Sıralama özellikleri

Bir filtrenin birden çok 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 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, ardından aynı miktara sahip 2 satır varsa "Gönderim Tarihi"ne göre sıralanır.

Tablo 2. Satış verileri 2 sütuna göre sıralandı
CEVAP B C D E F G
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Gönderim Tarihi
2 Kapı D-01X 15 ABD doları 2 Güney Emir 15.03.2016
3 Motor ENG-0161 330,00 ABD doları 2 Kuzey Jale 02.07.2016
4 Dönme dolap W-24 20,50 TL 4 Batı Banu 01.03.2016
5 Panel P-034 6,00 ABD doları 4 Kuzey Devin 15.03.2016
6 Panel P-052 11,50 TL 7 Doğu Erik 16.05.2016
7 Çerçeve FR-0B1 34,00 ABD doları 8 Doğu Hannah 12.03.2016
8 Dönme dolap W-24 20,50 TL 11 Güney Sheldon'dan daha fazla içerik 30.04.2016

Filtreleme ö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, değerlerin ise ölçüt olduğu bir harita olarak sağlarsınız.

Boole condition kullanılarak belirtilen ölçütlerde değerlerin gösterilmesi için koşul True olmalıdır. Koşul, hiddenValues değerini geçersiz kılmaz. hiddenValues altında bir değer listeleniyorsa o değerin tüm eşleşmeleri gizlidir.

Aşağıdaki kod örneğinde bir filtre ölçütü eşlemesi 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 "Gönderim Tarihi"nin 30 Nisan 2016'dan önce olduğu satırları gösterir.

Tablo 3. Filtre ölçütlerini kullanan satış verileri
CEVAP B C D E F G
1 Öğe Kategorisi Model Numarası Maliyet Miktar Bölge Satış görevlisi Gönderim Tarihi
2 Dönme dolap W-24 20,50 TL 4 Batı Banu 01.03.2016
3 Kapı D-01X 15 ABD doları 2 Güney Emir 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ü oluşturma, bu görünümü kopyalama ve yukarıdaki örnek satış verilerini kullanarak kopya sürümü güncelleme işlemleri gösterilmektedir.

Python

e-tablolar/snippet'ler/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")