ফিল্টার ব্যবহার করে ডেটা দৃশ্যমানতা পরিচালনা করুন

এই ডকুমেন্টটি স্প্রেডশিটে দেখানো ডেটা বাছাই এবং ফিল্টার করার জন্য ফিল্টার ব্যবহার সম্পর্কে।

ফিল্টারগুলি আপনাকে স্প্রেডশিট দেখার সময় যে ডেটা দেখা যায় তা বাছাই এবং ফিল্টার করার অনুমতি দেয়। ফিল্টারগুলি আপনার স্প্রেডশিটে ডেটা মান পরিবর্তন করে না। আপনি অস্থায়ীভাবে তথ্য লুকাতে বা সাজানোর জন্য ফিল্টার ব্যবহার করতে পারেন। নির্দিষ্ট ফিল্টার মানদণ্ডের সাথে মেলে এমন ডেটা ফিল্টার চালু থাকাকালীন প্রদর্শিত হয় না। ফিল্টার ভিউ ব্যবহার করে, আপনি বিভিন্ন নামযুক্ত ফিল্টার সংরক্ষণ করতে পারেন এবং যখনই চান তাদের মধ্যে স্যুইচ করতে পারেন।

Google Sheets API অনুরোধে ফিরে আসা ডেটা ফিল্টার করতে, DataFilter অবজেক্টটি ব্যবহার করুন। আরও তথ্যের জন্য, পড়ুন, লিখুন এবং মেটাডেটা অনুসন্ধান করুন দেখুন।

ফিল্টার ব্যবহারের ক্ষেত্রে

ফিল্টার ব্যবহারের কিছু উদাহরণ নিচে দেওয়া হল:

  • একটি নির্দিষ্ট কলাম অনুসারে ডেটা সাজান। উদাহরণস্বরূপ, ব্যবহারকারীর রেকর্ডগুলি শেষ নাম অনুসারে সাজান।
  • নির্দিষ্ট শর্ত পূরণ করে এমন ডেটা লুকান। উদাহরণস্বরূপ, দুই বছরের বেশি পুরনো সমস্ত রেকর্ড লুকান।
  • একটি নির্দিষ্ট মানের সাথে মেলে এমন ডেটা লুকান। উদাহরণস্বরূপ, "বন্ধ" স্ট্যাটাস সহ সমস্ত সমস্যা লুকান।

মৌলিক ফিল্টার

স্প্রেডশিটের জন্য BasicFilter অবজেক্ট হল ডিফল্ট ফিল্টার যা যখনই কেউ স্প্রেডশিটটি দেখে তখন প্রয়োগ করা হয়। একটি স্প্রেডশিটে প্রতি শিটে কেবল একটি মৌলিক ফিল্টার থাকতে পারে। আপনি এটি সাফ করে মৌলিক ফিল্টারটি বন্ধ করতে পারেন। এটি স্প্রেডশিট থেকে ফিল্টার এবং এর সমস্ত সেটিংস সরিয়ে দেয়। আপনি যদি একই ফিল্টারটি আবার চালু করতে চান, তাহলে আপনাকে আবার মানদণ্ড সেট করতে হবে।

মৌলিক ফিল্টার পরিচালনা করুন

মৌলিক ফিল্টার সেট বা সাফ করতে, উপযুক্ত অনুরোধের ধরণ সহ spreadsheets.batchUpdate পদ্ধতিটি ব্যবহার করুন:

  • মৌলিক ফিল্টার সেট করতে, SetBasicFilterRequest পদ্ধতি ব্যবহার করুন।
  • মৌলিক ফিল্টারটি সাফ করতে, ClearBasicFilterRequest পদ্ধতিটি ব্যবহার করুন।

মৌলিক ফিল্টার তালিকাভুক্ত করতে, spreadsheets.get পদ্ধতি ব্যবহার করুন এবং fields URL প্যারামিটারটি sheets/basicFilter এ সেট করুন। নিম্নলিখিত spreadsheets.get কোড নমুনাটি একটি ফিল্ড মাস্ক সহ একটি Google Sheets URL দেখায়:

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

ফিল্টার ভিউ

FilterView হলো একটি নামযুক্ত ফিল্টার যা আপনি যখন খুশি বন্ধ এবং চালু করতে পারেন। একটি শিটে একাধিক ফিল্টার ভিউ সংরক্ষণ করা যেতে পারে, তবে আপনি একবারে কেবল একটি প্রয়োগ করতে পারেন। একটি শিটে একটি মৌলিক ফিল্টার এবং একাধিক ফিল্টার ভিউ উভয়ই থাকতে পারে, তবে আপনি একই ডেটা পরিসরে উভয়ই একই সাথে প্রয়োগ করতে পারবেন না।

ফিল্টার ভিউ ব্যবহারের ক্ষেত্রে

ফিল্টার ভিউয়ের জন্য কিছু উদাহরণ ব্যবহারের উদাহরণ নিচে দেওয়া হল:

  • ডেটা দেখার সময় আপনার কাছে বেশ কয়েকটি ভিন্ন ফিল্টার রয়েছে যেগুলির মধ্যে আপনি স্যুইচ করতে চান।
  • আপনার স্প্রেডশিটে সম্পাদনা অ্যাক্সেস নেই কিন্তু আপনি এখনও একটি ফিল্টার প্রয়োগ করতে চান। এই ক্ষেত্রে, আপনি একটি অস্থায়ী ফিল্টার ভিউ তৈরি করতে পারেন যা শুধুমাত্র আপনার কাছে দৃশ্যমান।
  • আপনি চান যে আপনার স্প্রেডশিটটি যাদের সাথে শেয়ার করবেন তারা প্রত্যেকেই আলাদাভাবে ডেটা দেখুক। স্প্রেডশিট URL-এ spreadsheetId এবং filterViewId প্রদান করে আপনি যে ফিল্টার ভিউ প্রয়োগ করতে চান তা নির্দিষ্ট করতে পারেন। এটি করার জন্য, ফিল্টার ভিউ তৈরি করার সময় প্রতিক্রিয়ায় ফিরে আসা filterViewId ব্যবহার করুন।

    নিম্নলিখিত কোড নমুনাটি ফিল্টার ভিউ সহ একটি শীট URL দেখায়:

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

ফিল্টার ভিউ পরিচালনা করুন

ফিল্টার ভিউ তৈরি, ডুপ্লিকেট, পরিবর্তন বা মুছে ফেলার জন্য, উপযুক্ত অনুরোধের ধরণ সহ spreadsheets.batchUpdate পদ্ধতিটি ব্যবহার করুন:

  • ফিল্টার ভিউ তৈরি করতে, AddFilterViewRequest পদ্ধতিটি ব্যবহার করুন।
  • ফিল্টার ভিউয়ের একটি কপি তৈরি করতে, DuplicateFilterViewRequest পদ্ধতিটি ব্যবহার করুন।
  • ফিল্টার ভিউয়ের বৈশিষ্ট্য পরিবর্তন করতে, UpdateFilterViewRequest পদ্ধতিটি ব্যবহার করুন।
  • ফিল্টার ভিউ মুছে ফেলার জন্য, DeleteFilterViewRequest পদ্ধতিটি ব্যবহার করুন।

আপনার সমস্ত ফিল্টার ভিউ তালিকাভুক্ত করতে, spreadsheets.get পদ্ধতিটি ব্যবহার করুন এবং fields URL প্যারামিটারটি sheets/filterViews এ সেট করুন। নিম্নলিখিত spreadsheets.get কোড নমুনাটি একটি ফিল্ড মাস্ক সহ একটি Sheets URL দেখায়:

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

একটি ফিল্টারের JSON উপস্থাপনা

নিচের কোড নমুনাটি একটি FilterView অবজেক্টের JSON উপস্থাপনা দেখায়। BasicFilter অবজেক্টটি একই রকম, তবে এতে filterViewId এবং title ক্ষেত্র নেই এবং এটি একটি নামযুক্ত পরিসর ব্যবহার করতে পারে না।

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

নমুনা বিক্রয় তথ্য

এই নথির বাকি অংশে নিম্নলিখিত নমুনা বিক্রয় তথ্য টেবিলের উল্লেখ রয়েছে:

সারণী ১. নমুনা বিক্রয় তথ্য
আইটেম বিভাগ মডেল নম্বর খরচ পরিমাণ অঞ্চল বিক্রয়কর্মী পাঠানোর তারিখ
চাকা W-24 সম্পর্কে $২০.৫০ পশ্চিম বেথ ৩/১/২০১৬
দরজা ডি-০১এক্স $১৫.০০ দক্ষিণ আমির ৩/১৫/২০১৬
ফ্রেম এফআর-০বি১ $৩৪.০০ পূর্ব হান্না ৩/১২/২০১৬
প্যানেল পি-০৩৪ $৬.০০ উত্তর ডেভিন ৩/১৫/২০১৬
প্যানেল পি-০৫২ $১১.৫০ পূর্ব এরিক ৫/১৬/২০১৬
চাকা W-24 সম্পর্কে $২০.৫০ ১১ দক্ষিণ শেলডন ৪/৩০/২০১৬
ইঞ্জিন ENG-0161 সম্পর্কে $৩৩০.০০ উত্তর জেসি ৭/২/২০১৬

স্পেসিফিকেশন সাজান

একটি ফিল্টারের একাধিক সাজানোর স্পেসিফিকেশন থাকতে পারে। এই স্পেসিফিকেশনগুলি ডেটা কীভাবে সাজানো হবে তা নির্ধারণ করে এবং নির্দিষ্ট ক্রমে প্রয়োগ করা হয়। SortSpec.dimensionIndex অ্যাট্রিবিউটটি সেই কলাম সূচক নির্দিষ্ট করে যেখানে সাজানোর জন্য প্রয়োগ করা উচিত।

নিম্নলিখিত কোড নমুনাটি একটি সাজানোর স্পেসিফিকেশন দেখায়:

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

নমুনা বিক্রয় তথ্যের উপর প্রয়োগ করা হলে, এই স্পেসিফিকেশনটি প্রথমে "পরিমাণ" কলামের ভিত্তিতে সাজানো হয় এবং তারপর, যদি দুটি সারিতে একই পরিমাণ থাকে, তাহলে "শিপ ডেট" অনুসারে সাজানো হয়।

সারণী ২। দুটি কলাম অনুসারে সাজানো বিক্রয় তথ্য
আইটেম বিভাগ মডেল নম্বর খরচ পরিমাণ অঞ্চল বিক্রয়কর্মী পাঠানোর তারিখ
দরজা ডি-০১এক্স $১৫.০০ দক্ষিণ আমির ৩/১৫/২০১৬
ইঞ্জিন ENG-0161 সম্পর্কে $৩৩০.০০ উত্তর জেসি ৭/২/২০১৬
চাকা W-24 সম্পর্কে $২০.৫০ পশ্চিম বেথ ৩/১/২০১৬
প্যানেল পি-০৩৪ $৬.০০ উত্তর ডেভিন ৩/১৫/২০১৬
প্যানেল পি-০৫২ $১১.৫০ পূর্ব এরিক ৫/১৬/২০১৬
ফ্রেম এফআর-০বি১ $৩৪.০০ পূর্ব হান্না ৩/১২/২০১৬
চাকা W-24 সম্পর্কে $২০.৫০ ১১ দক্ষিণ শেলডন ৪/৩০/২০১৬

ফিল্টারের মানদণ্ড

FilterCriteria অবজেক্ট নির্ধারণ করে যে কোন স্প্রেডশিট ডেটা একটি মৌলিক ফিল্টার বা ফিল্টার ভিউতে দেখানো বা লুকানো আছে। প্রতিটি মানদণ্ড একটি নির্দিষ্ট কলামের মানের উপর নির্ভর করে। আপনি ফিল্টার মানদণ্ডকে একটি মানচিত্র হিসাবে সরবরাহ করেন যেখানে কীগুলি কলামের সূচী এবং মানগুলি মানদণ্ড।

বুলিয়ান condition ব্যবহার করে নির্দিষ্ট করা মানদণ্ডের জন্য, মানগুলি দেখানোর জন্য শর্তটি true হতে হবে। শর্তটি hiddenValues ​​কে ওভাররাইড করে না। যদি একটি মান hiddenValues ​​এর অধীনে তালিকাভুক্ত থাকে, তবে একটি মানের সাথে সমস্ত মিল এখনও লুকানো থাকে।

নিম্নলিখিত কোড নমুনাটি একটি ফিল্টার মানদণ্ডের মানচিত্র দেখায়:

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

নমুনা বিক্রয় তথ্যের ক্ষেত্রে প্রয়োগ করা হলে, এই মানদণ্ডটি শুধুমাত্র সেই সারিগুলি দেখায় যেখানে "আইটেম ক্যাটাগরি" কলামের মান "প্যানেল" নয়, এবং যেখানে "শিপ ডেট" কলামের মান "এপ্রিল 30, 2016" এর আগে।

সারণী 3. ফিল্টার মানদণ্ড ব্যবহার করে বিক্রয় তথ্য
আইটেম বিভাগ মডেল নম্বর খরচ পরিমাণ অঞ্চল বিক্রয়কর্মী পাঠানোর তারিখ
চাকা W-24 সম্পর্কে $২০.৫০ পশ্চিম বেথ ৩/১/২০১৬
দরজা ডি-০১এক্স $১৫.০০ দক্ষিণ আমির ৩/১৫/২০১৬
ফ্রেম এফআর-০বি১ $৩৪.০০ পূর্ব হান্না ৩/১২/২০১৬

ফিল্টার ভিউ কোড নমুনা

নিচের কোড নমুনাটি দেখায় কিভাবে একটি ফিল্টার ভিউ তৈরি করতে হয়, এটিকে ডুপ্লিকেট করতে হয় এবং তারপর নমুনা বিক্রয় ডেটা ব্যবহার করে ডুপ্লিকেট সংস্করণটি আপডেট করতে হয়।

পাইথন

শীট/স্নিপেট/শীট_ফিল্টার_ভিউ.পি
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")