ফিল্টার

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

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

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

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

স্প্রেডশিটের জন্য 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 ব্যবহার করুন।

    নিম্নলিখিত কোড নমুনাটি একটি ফিল্টার ভিউ সহ একটি Google Sheets 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 কোড নমুনাটি একটি ফিল্ড মাস্ক সহ একটি Google Sheets URL দেখায়:

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)
    },
    ...
  }
}

উদাহরণ ডেটা

এই নথির বাকি অংশ নীচের উদাহরণ বিক্রয় তথ্য টেবিলের উল্লেখ করে:

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

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

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

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

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

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

সারণী ২। বিক্রয় তথ্য ২টি কলাম অনুসারে সাজানো
আইটেম বিভাগ মডেল নম্বর খরচ পরিমাণ অঞ্চল বিক্রয়কর্মী পাঠানোর তারিখ
দরজা ডি-০১এক্স $১৫.০০ দক্ষিণ আমির ৩/১৫/২০১৬
ইঞ্জিন 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")