फ़िल्टर

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

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

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

बेसिक फ़िल्टर

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

क्रम से लगाने की जानकारी

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

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

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

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

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

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

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

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

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

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

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

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