সার্ভিস এবং টাইপ গেটার

পাইথনে API ব্যবহারের জন্য প্রয়োজনীয় সকল প্রোটো ক্লাসের রেফারেন্স আনা বেশ কঠিন হতে পারে এবং এর জন্য আপনাকে API সম্পর্কে অন্তর্নিহিত ধারণা থাকতে হবে অথবা প্রোটো বা ডকুমেন্টেশন রেফারেন্স করার জন্য ঘন ঘন কনটেক্সট-সুইচ ব্যবহার করতে হবে।

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

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

GoogleAdsService ক্লায়েন্টের একটি উদাহরণ পুনরুদ্ধার করার জন্য 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 v22 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v22")
googleads_service = client.get_service("GoogleAdsService")

একটি Campaign ইনস্ট্যান্স পুনরুদ্ধার করার জন্য get_type পদ্ধতিটি কীভাবে ব্যবহার করবেন তার একটি উদাহরণ এখানে দেওয়া হল।

from google.ads.googleads.client import GoogleAdsClient

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

এনামস

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

client = GoogleAdsClient.load_from_storage(version=v22)

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

প্রোটো অবজেক্ট ফিল্ড যা এনাম, পাইথনে নেটিভ এনাম টাইপ দ্বারা প্রতিনিধিত্ব করা হয়। এর অর্থ হল আপনি সহজেই সদস্যের মান পড়তে পারবেন। পাইথন প্রতিলিপিতে পূর্ববর্তী উদাহরণ থেকে 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'>

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

সংস্করণকরণ

API-এর একাধিক সংস্করণ একই সময়ে রক্ষণাবেক্ষণ করা হয়। যদিও v22 সর্বশেষ সংস্করণ হতে পারে, পূর্ববর্তী সংস্করণগুলি সূর্যাস্ত না হওয়া পর্যন্ত অ্যাক্সেসযোগ্য। লাইব্রেরিতে প্রতিটি সক্রিয় API সংস্করণের সাথে সঙ্গতিপূর্ণ পৃথক প্রোটো বার্তা ক্লাস অন্তর্ভুক্ত থাকবে। একটি নির্দিষ্ট সংস্করণের জন্য একটি বার্তা ক্লাস অ্যাক্সেস করতে, একটি ক্লায়েন্ট শুরু করার সময় version কীওয়ার্ড প্যারামিটারটি সরবরাহ করুন যাতে এটি সর্বদা সেই প্রদত্ত সংস্করণ থেকে উদাহরণ ফেরত দেয়:

client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v22/")
# The Campaign instance will be from the v22 version of the API.
campaign = client.get_type("Campaign")

get_service এবং get_type পদ্ধতিতে কল করার সময় সংস্করণটি নির্দিষ্ট করাও সম্ভব। এটি করলে ক্লায়েন্ট শুরু করার সময় প্রদত্ত সংস্করণটি ওভাররাইড হবে:

client = GoogleAdsService.load_from_storage()
# This will load the v22 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v22")

client = GoogleAdsService.load_from_storage(version="v22")
# This will load the v20 version of a Campaign.
campaign = client.get_type("Campaign", version="v20")

যদি কোনও version কীওয়ার্ড প্যারামিটার সরবরাহ না করা হয় তবে লাইব্রেরিটি ডিফল্টভাবে সর্বশেষ সংস্করণ ব্যবহার করবে। সর্বশেষ এবং অন্যান্য উপলব্ধ সংস্করণগুলির একটি আপডেট তালিকা API রেফারেন্স ডকুমেন্টেশনের বাম-হাতের নেভিগেশন বিভাগে পাওয়া যাবে।