फ़िल्टर

फ़िल्टर की मदद से, स्प्रेडशीट में दिखने वाले डेटा को क्रम से लगाया जा सकता है और फ़िल्टर किया जा सकता है. फ़िल्टर, आपकी स्प्रेडशीट में मौजूद डेटा की वैल्यू नहीं बदलते. कुछ समय के लिए जानकारी छिपाने या क्रम से लगाने के लिए, फ़िल्टर का इस्तेमाल किया जा सकता है. फ़िल्टर चालू होने पर, फ़िल्टर की तय शर्तों से मैच करने वाला डेटा नहीं दिखता. फ़िल्टर व्यू की मदद से, अलग-अलग नाम वाले फ़िल्टर भी सेव किए जा सकते हैं. साथ ही, जब चाहें, उन फ़िल्टर के बीच स्विच किया जा सकता है.

यहां फ़िल्टर के इस्तेमाल के कुछ उदाहरण दिए गए हैं:

  • डेटा को किसी खास कॉलम के हिसाब से क्रम से लगाएं. उदाहरण के लिए, उपयोगकर्ता के रिकॉर्ड को सरनेम के हिसाब से क्रम से लगाएं.
  • किसी खास शर्त से मेल खाने वाला डेटा छिपाना. उदाहरण के लिए, दो साल से ज़्यादा पुराने सभी रिकॉर्ड छिपाएं.
  • किसी खास वैल्यू से मैच होने वाला डेटा छिपाएं. उदाहरण के लिए, "बंद है" स्थिति वाली सभी समस्याओं को छिपाएं.

बुनियादी फ़िल्टर

स्प्रेडशीट के लिए, BasicFilter डिफ़ॉल्ट फ़िल्टर होता है. जब भी कोई व्यक्ति स्प्रेडशीट देखता है, तो यह फ़िल्टर लागू हो जाता है. स्प्रेडशीट में हर शीट के लिए एक बुनियादी फ़िल्टर हो सकता है. बुनियादी फ़िल्टर को हटाकर, उसे बंद किया जा सकता है. इससे स्प्रेडशीट से फ़िल्टर और उसकी सभी सेटिंग हट जाती हैं. अगर आपको उसी फ़िल्टर को फिर से चालू करना है, तो आपको ज़रूरी शर्तें फिर से सेट करनी होंगी.

बुनियादी फ़िल्टर मैनेज करना

बुनियादी फ़िल्टर को सेट या हटाने के लिए, सही अनुरोध टाइप के साथ spreadsheets.batchUpdate तरीका इस्तेमाल करें:

  • बुनियादी फ़िल्टर सेट करने के लिए, SetBasicFilterRequest तरीका अपनाएं.
  • बुनियादी फ़िल्टर हटाने के लिए, ClearBasicFilterRequest तरीका इस्तेमाल करें.

बुनियादी फ़िल्टर की सूची बनाने के लिए, spreadsheets.get तरीके का इस्तेमाल करें और fields यूआरएल पैरामीटर को sheets/basicFilter पर सेट करें. यहां दिया गया spreadsheets.get कोड सैंपल, फ़ील्ड मास्क के साथ Google Sheets का यूआरएल दिखाता है:

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

फ़िल्टर व्यू

FilterView एक नाम वाला फ़िल्टर है, जिसे जब चाहें बंद और चालू किया जा सकता है. स्प्रेडशीट में कई फ़िल्टर व्यू हो सकते हैं. हालांकि, एक बार में सिर्फ़ एक फ़िल्टर व्यू लागू किया जा सकता है.

यहां फ़िल्टर व्यू के इस्तेमाल के कुछ उदाहरण दिए गए हैं:

  • आपके पास कई अलग-अलग फ़िल्टर हैं, जिनके बीच डेटा देखते समय स्विच करना है.
  • आपके पास स्प्रेडशीट में बदलाव करने का ऐक्सेस नहीं है, लेकिन आपको फिर भी फ़िल्टर लागू करना है. ऐसे में, कुछ समय के लिए ऐसा फ़िल्टर व्यू बनाया जा सकता है जो सिर्फ़ आपको दिखे.
  • आपको अपनी स्प्रेडशीट को जिन लोगों के साथ शेयर करना है वे डेटा को अलग-अलग तरह से देख सकें. स्प्रेडशीट के यूआरएल में spreadsheetId और filterViewId डालकर, वह फ़िल्टर व्यू चुना जा सकता है जिसे आपको लागू करना है. ऐसा करने के लिए, फ़िल्टर व्यू बनाते समय जवाब में मिले filterViewId का इस्तेमाल करें.

    यहां दिए गए कोड सैंपल में, फ़िल्टर व्यू वाला Google Sheets यूआरएल दिखाया गया है:

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

फ़िल्टर व्यू मैनेज करना

फ़िल्टर व्यू बनाने, उनका डुप्लीकेट बनाने, उनमें बदलाव करने या उन्हें मिटाने के लिए, सही अनुरोध टाइप के साथ spreadsheets.batchUpdate तरीका इस्तेमाल करें:

  • फ़िल्टर व्यू बनाने के लिए, AddFilterViewRequest तरीका अपनाएं.
  • फ़िल्टर व्यू की कॉपी बनाने के लिए, DuplicateFilterViewRequest तरीका अपनाएं.
  • फ़िल्टर व्यू की प्रॉपर्टी में बदलाव करने के लिए, UpdateFilterViewRequest का इस्तेमाल करें.
  • किसी फ़िल्टर व्यू को मिटाने के लिए, DeleteFilterViewRequest वाला तरीका अपनाएं.

अपने सभी फ़िल्टर व्यू की सूची बनाने के लिए, spreadsheets.get तरीके का इस्तेमाल करें और fields यूआरएल पैरामीटर को sheets/filterViews पर सेट करें. यहां दिया गया spreadsheets.get कोड सैंपल, फ़ील्ड मास्क के साथ Google Sheets का यूआरएल दिखाता है:

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

फ़िल्टर का प्रतिनिधित्व

नीचे दिए गए कोड सैंपल में, FilterView ऑब्जेक्ट के लिए JSON का इस्तेमाल करके दिखाया गया है. BasicFilter ऑब्जेक्ट एक जैसा ही होता है. हालांकि, इसमें filterViewId और title फ़ील्ड नहीं होते. साथ ही, इसमें नाम वाली रेंज का इस्तेमाल नहीं किया जा सकता.

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

डेटा का उदाहरण

इस दस्तावेज़ के बाकी हिस्से में, बिक्री के डेटा की उदाहरण टेबल का रेफ़रंस दिया गया है:

टेबल 1. बिक्री के डेटा का उदाहरण
A B C D E F G
1 आइटम की कैटगरी मॉडल नंबर लागत संख्या क्षेत्र सेल्सपर्सन शिप करने की तारीख
2 पहिया W-24 20.50 डॉलर 4 पश्चिम बेथ 3/1/2016
3 दरवाज़ा D-01X 15.00 डॉलर 2 दक्षिण आमिर 15/3/2016
4 फ़्रेम FR-0B1 34.00 डॉलर 8 पूर्व हन्नाह 3/12/2016
5 पैनल P-034 INR270 4 उत्तरी Devyn 15/3/2016
6 पैनल P-052 1,150 रुपये 7 पूर्व एरिक 16/5/2016
7 पहिया W-24 20.50 डॉलर 11 दक्षिण Sheldon 4/30/2016
8 इंजन ENG-0161 330.00 डॉलर 2 उत्तरी जेसी 7/2/2016

स्पेसिफ़िकेशन को क्रम से लगाना

किसी फ़िल्टर में, कई तरह से डेटा को क्रम में लगाया जा सकता है. इन स्पेसिफ़िकेशन से यह तय होता है कि डेटा को किस क्रम में क्रम से लगाया जाए. साथ ही, ये तय किए गए क्रम में लागू होते हैं. SortSpec.dimensionIndex एट्रिब्यूट से उस कॉलम के इंडेक्स की जानकारी मिलती है जिस पर क्रम से लगाने की सुविधा लागू की जानी है.

यहां दिया गया कोड सैंपल, क्रम से लगाने की जानकारी दिखाता है:

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

बिक्री के डेटा के उदाहरण पर लागू करने पर, यह स्पेसिफ़िकेशन पहले "संख्या" के हिसाब से क्रम से लगाता है. इसके बाद, अगर दो पंक्तियों में संख्या एक जैसी है, तो "शिप करने की तारीख" के हिसाब से क्रम से लगाता है.

टेबल 2. बिक्री का डेटा, दो कॉलम के हिसाब से क्रम में लगाया गया
A B C D E F G
1 आइटम की कैटगरी मॉडल नंबर लागत संख्या क्षेत्र सेल्सपर्सन शिप करने की तारीख
2 दरवाज़ा D-01X 15.00 डॉलर 2 दक्षिण आमिर 15/3/2016
3 इंजन ENG-0161 330.00 डॉलर 2 उत्तरी जेसी 7/2/2016
4 पहिया W-24 20.50 डॉलर 4 पश्चिम बेथ 3/1/2016
5 पैनल P-034 INR270 4 उत्तरी Devyn 15/3/2016
6 पैनल P-052 1,150 रुपये 7 पूर्व एरिक 16/5/2016
7 फ़्रेम FR-0B1 34.00 डॉलर 8 पूर्व हन्नाह 3/12/2016
8 पहिया W-24 20.50 डॉलर 11 दक्षिण Sheldon 4/30/2016

फ़िल्टर करने की शर्तें

FilterCriteria के तरीके से यह तय होता है कि बुनियादी फ़िल्टर या फ़िल्टर व्यू में स्प्रेडशीट का कौनसा डेटा दिखेगा या छिपा रहेगा. हर शर्त, किसी खास कॉलम की वैल्यू पर निर्भर करती है. फ़िल्टर की शर्तों को मैप के तौर पर दिया जाता है. इसमें कॉलम इंडेक्स, कुंजी के तौर पर और शर्तें, वैल्यू के तौर पर होती हैं.

बूलियन condition का इस्तेमाल करके तय की गई शर्तों के लिए, वैल्यू दिखाने के लिए शर्त True होनी चाहिए. शर्त, hiddenValues को बदल नहीं देती. अगर कोई वैल्यू hiddenValues में शामिल है, तो भी उस वैल्यू से मैच होने वाली सभी वैल्यू छिपी रहेंगी.

यहां दिया गया कोड सैंपल, फ़िल्टर की शर्तों का मैप दिखाता है:

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

बिक्री के डेटा के उदाहरण पर लागू करने पर, यह शर्त सिर्फ़ उन पंक्तियों को दिखाती है जिनमें "आइटम कैटगरी", "पैनल" नहीं है और "शिपिंग की तारीख", 30 अप्रैल, 2016 से पहले की है.

टेबल 3. फ़िल्टर की शर्तों का इस्तेमाल करके बिक्री का डेटा
A B C D E F G
1 आइटम की कैटगरी मॉडल नंबर लागत संख्या क्षेत्र सेल्सपर्सन शिप करने की तारीख
2 पहिया W-24 20.50 डॉलर 4 पश्चिम बेथ 3/1/2016
3 दरवाज़ा D-01X 15.00 डॉलर 2 दक्षिण आमिर 15/3/2016
4 फ़्रेम FR-0B1 34.00 डॉलर 8 पूर्व हन्नाह 3/12/2016

नमूना

यहां दिए गए कोड सैंपल में, फ़िल्टर व्यू बनाने, उसका डुप्लीकेट बनाने, और फिर ऊपर दिए गए बिक्री के डेटा के उदाहरण का इस्तेमाल करके, डुप्लीकेट वर्शन को अपडेट करने का तरीका बताया गया है.

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