পাইথনে এপিআই (API) ব্যবহার করার জন্য প্রয়োজনীয় বিভিন্ন প্রোটো ক্লাসের রেফারেন্স খুঁজে বের করা বেশ সময়সাপেক্ষ হতে পারে এবং এর জন্য এপিআই সম্পর্কে আপনার গভীর ধারণা থাকা প্রয়োজন, অথবা প্রোটো বা ডকুমেন্টেশন রেফারেন্স করার জন্য আপনাকে ঘন ঘন কনটেক্সট-সুইচ করতে হতে পারে।
ক্লায়েন্টের get_service এবং get_type পদ্ধতিগুলি
এই দুটি গেটার মেথড আপনাকে এপিআই-এর যেকোনো সার্ভিস বা টাইপ অবজেক্ট পুনরুদ্ধার করার সুযোগ দেয়। সার্ভিস ক্লায়েন্ট পুনরুদ্ধার করার জন্য 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 v24 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v24")
googleads_service = client.get_service("GoogleAdsService")
get_type মেথড ব্যবহার করে কীভাবে একটি Campaign ইনস্ট্যান্স পুনরুদ্ধার করা যায়, তার একটি উদাহরণ এখানে দেওয়া হলো।
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v24")
campaign = client.get_type("Campaign")
এনাম
যদিও আপনি Enum পুনরুদ্ধার করতে get_type মেথডটি ব্যবহার করতে পারেন, প্রতিটি GoogleAdsClient ইনস্ট্যান্সের একটি enums অ্যাট্রিবিউটও থাকে যা get_type মেথডের মতোই একই পদ্ধতিতে ডাইনামিকভাবে Enum লোড করে। এই ইন্টারফেসটি get_type ব্যবহারের চেয়ে সহজ এবং সহজে পাঠযোগ্য করার উদ্দেশ্যে তৈরি করা হয়েছে।
client = GoogleAdsClient.load_from_storage(version=v24)
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
প্রোটো অবজেক্ট ফিল্ড, যেগুলো এনাম (enum), পাইথনে নেটিভ এনাম টাইপ দ্বারা উপস্থাপিত হয়। এর মানে হলো, আপনি সহজেই মেম্বারের মান পড়তে পারবেন। আগের উদাহরণের campaign ইনস্ট্যান্সটি একটি পাইথন রেপলে (repl) ব্যবহার করার পদ্ধতি:
>>> 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 সেট করা আছে, তার উপর নির্ভর করে `enum`-এর সাথে মিথস্ক্রিয়ার পদ্ধতি ভিন্ন হয়। এই দুটি ইন্টারফেস সম্পর্কে বিস্তারিত জানতে, `protobuf messages` ডকুমেন্টেশন দেখুন।
সংস্করণ
একই সময়ে এপিআই-এর একাধিক সংস্করণ রক্ষণাবেক্ষণ করা হয়। যদিও v24 সর্বশেষ সংস্করণ হতে পারে, পূর্ববর্তী সংস্করণগুলো বন্ধ না হওয়া পর্যন্ত ব্যবহারযোগ্য থাকে। লাইব্রেরিতে প্রতিটি সক্রিয় এপিআই সংস্করণের জন্য আলাদা প্রোটো মেসেজ ক্লাস অন্তর্ভুক্ত থাকবে। একটি নির্দিষ্ট সংস্করণের মেসেজ ক্লাস অ্যাক্সেস করতে, ক্লায়েন্ট ইনিশিয়ালাইজ করার সময় version ' কীওয়ার্ড প্যারামিটারটি সরবরাহ করুন, যাতে এটি সর্বদা সেই নির্দিষ্ট সংস্করণের ইনস্ট্যান্স রিটার্ন করে।
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v24/")
# The Campaign instance will be from the v24 version of the API.
campaign = client.get_type("Campaign")
get_service এবং get_type মেথডগুলো কল করার সময়েও ভার্সন নির্দিষ্ট করে দেওয়া সম্ভব। এটি করলে ক্লায়েন্ট ইনিশিয়ালাইজ করার সময় দেওয়া ভার্সনটি ওভাররাইড হয়ে যাবে:
client = GoogleAdsService.load_from_storage()
# This will load the v24 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v24")
client = GoogleAdsService.load_from_storage(version="v24")
# This will load the v22 version of a Campaign.
campaign = client.get_type("Campaign", version="v22")
যদি কোনো version কীওয়ার্ড প্যারামিটার প্রদান করা না হয়, তাহলে লাইব্রেরিটি ডিফল্টরূপে সর্বশেষ ভার্সনটি ব্যবহার করবে। সর্বশেষ এবং অন্যান্য উপলব্ধ ভার্সনগুলোর একটি হালনাগাদ তালিকা এপিআই রেফারেন্স ডকুমেন্টেশনের বাম দিকের নেভিগেশন বিভাগে পাওয়া যাবে।