পরিষেবা ও টাইপ গেটার

Python-এ API ব্যবহার করার জন্য প্রয়োজনীয় বিভিন্ন প্রোটো ক্লাসের রেফারেন্স আনা খুবই বিস্তারিত হতে পারে এবং এর জন্য API-এর অন্তর্নিহিত জ্ঞান থাকতে হবে অথবা প্রোটো বা ডকুমেন্টেশন রেফারেন্স করার জন্য ঘনঘন প্রসঙ্গ পরিবর্তন করতে হবে।

ক্লায়েন্টের get_service ও get_type পদ্ধতি

এই দুটি গেটার পদ্ধতি আপনাকে API-তে যেকোনও পরিষেবা বা টাইপ অবজেক্ট ফিরিয়ে আনতে দেয়। পরিষেবা ক্লায়েন্ট রিট্রিভ করতে get_service পদ্ধতি ব্যবহার করা হয়। get_type অন্য কোনও অবজেক্টের জন্য ব্যবহার করা হয়। ভার্সন পাথ google/ads/googleads/v*/services/-এর অধীনে কোডে পরিষেবা ক্লায়েন্ট ক্লাসকে সংজ্ঞায়িত করা হয় এবং সব ধরনের ক্লাসকে বিভিন্ন অবজেক্ট ক্যাটেগরি google/ads/googleads/v*/common|enums|errors|resources|services/types/-এর অধীনে সংজ্ঞায়িত করা হয়। ভার্সন ডিরেক্টরির নিচে থাকা সব কোড তৈরি করা হয়, তাই কোডবেসের স্ট্রাকচার পরিবর্তন হয়ে গেলে, অবজেক্ট সরাসরি ইমপোর্ট করার পরিবর্তে এইসব পদ্ধতি ব্যবহার করা পেশাদার পদ্ধতি।

GoogleAdsService ক্লায়েন্টের ইনস্ট্যান্স (অথবা google-ads v28.4.0 ও পরবর্তী ভার্সনে is_async=True পাস করে অ্যাসিঙ্ক্রোনাস GoogleAdsServiceAsyncClient) পাওয়ার জন্য get_service পদ্ধতি কীভাবে ব্যবহার করতে হয় তা নিচের উদাহরণে দেখানো হয়েছে:

from google.ads.googleads.client import GoogleAdsClient

# "load_from_storage" loads your API credentials from disk so they
# can be used for service initialization. Providing the optional `version`
# parameter means that the v25 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v25")
googleads_service = client.get_service("GoogleAdsService")

# Supported in google-ads v28.4.0 and later: retrieve an async service client.
googleads_async_service = client.get_service("GoogleAdsService", is_async=True)

নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে get_type পদ্ধতি ব্যবহার করে একটি Campaign ইনস্ট্যান্স রিট্রিভ করতে হয়:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v25")
campaign = client.get_type("Campaign")

Enums

আপনি এনুমেরেশন রিট্রিভ করার জন্য get_type পদ্ধতি ব্যবহার করতে পারলেও, প্রতিটি GoogleAdsClient ইনস্ট্যান্সে একটি enums অ্যাট্রিবিউটও থাকে যা get_type পদ্ধতির মতো একই মেকানিজম ব্যবহার করে এনুমেরেশন ডায়নামিক লোড করে। এই ইন্টারফেসটি get_type-এর তুলনায় আরও সহজ ও সহজে পাঠযোগ্য:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v25")

campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED

এনাম হিসেবে থাকা Proto অবজেক্ট ফিল্ডকে Python-এ বিল্ট-ইন enum টাইপ দিয়ে দেখানো হয়। এর অর্থ হল, আপনি মেম্বারের ভ্যালু সরাসরি পড়তে পারবেন। Python REPL-এ আগের উদাহরণের campaign ইনস্ট্যান্সের সাথে কাজ করা:

>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3

কখনও কখনও enum ভ্যালুর সাথে সম্পর্কিত ফিল্ডের নাম জানলে সুবিধা হয়। name অ্যাট্রিবিউট ব্যবহার করে আপনি এই তথ্য অ্যাক্সেস করতে পারবেন:

>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>

আপনার কাছে true বা false হিসেবে সেট করা use_proto_plus কনফিগারেশন আছে কিনা তার উপর নির্ভর করে এনুমের সাথে ইন্টার‍্যাক্ট করা আলাদা হয়। দুটি ইন্টারফেসের বিবরণ পেতে, protobuf মেসেজ ডকুমেন্টেশন দেখুন।

ভার্সনিং

একই সময়ে API-এর একাধিক ভার্সন বজায় রাখা হয়। v25 হল লেটেস্ট ভার্সন, তবে আগের ভার্সনগুলি এখনও অ্যাক্সেস করা যাবে যতক্ষণ না সেগুলি বন্ধ করে দেওয়া হয়। লাইব্রেরিতে প্রতিটি অ্যাক্টিভ API ভার্সনের সাথে সম্পর্কিত আলাদা আলাদা proto message ক্লাস থাকে। নির্দিষ্ট ভার্সনের জন্য মেসেজ ক্লাস অ্যাক্সেস করতে, ক্লায়েন্ট ইনিশিয়ালাইজ করার সময় versionকীওয়ার্ড প্যারামিটার দিন যাতে এটি সবসময় সেই প্রদত্ত ভার্সন থেকে একটি ইনস্ট্যান্স রিটার্ন করে:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v25")
# The Campaign instance will be from the v25 version of the API.
campaign = client.get_type("Campaign")

ক্লায়েন্ট ইনিশিয়ালাইজ করার সময় version নির্দিষ্ট না করলে, get_service ও get_type মেথড কল করার সময় প্রতিটি কলের জন্য ভার্সন নির্দিষ্ট করতে পারবেন (মনে রাখবেন, GoogleAdsClient ইনিশিয়ালাইজ করার সময় version সেট করা থাকলে, get_service বা get_type-এ পাস করা যেকোনও version আর্গুমেন্টকে ওভাররাইড করে):

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage()
# This loads the v25 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v25"
)

# This loads a specific supported API version (such as v23) of a Campaign.
campaign = client.get_type("Campaign", version="v23")

কোনও version কীওয়ার্ড প্যারামিটার দেওয়া না থাকলে, লাইব্রেরি ডিফল্ট হিসেবে আপনার ইনস্টল করা google-ads প্যাকেজের সবচেয়ে বেশি API ভার্সন ("v25" লেটেস্ট রিলিজ) ব্যবহার করে। মনে রাখবেন, মাইনর API রিলিজ (যেমন v25.1) সেগুলির মেজর ভার্সন স্ট্রিং (version="v25") ব্যবহার করে অ্যাক্সেস করা হয়। লেটেস্ট ও অন্যান্য উপলভ্য ভার্সনের আপডেট করা তালিকা API রেফারেন্স ডকুমেন্টেশনের বাঁদিকের নেভিগেশন বিভাগে পাওয়া যাবে।