Python में एपीआई का इस्तेमाल करने के लिए ज़रूरी सभी प्रोटो क्लास के रेफ़रंस फ़ेच करना, काफ़ी मुश्किल हो सकता है. इसके लिए, आपको एपीआई की अच्छी समझ होनी चाहिए या प्रोटो या दस्तावेज़ों का रेफ़रंस देने के लिए, बार-बार कॉन्टेक्स्ट स्विच करना पड़ सकता है.
क्लाइंट के get_service और get_type तरीके
इन दोनों गेटर मेथड की मदद से, एपीआई में किसी भी सेवा या टाइप ऑब्जेक्ट को वापस पाया जा सकता है. get_service तरीके का इस्तेमाल, सेवा क्लाइंट को वापस पाने के लिए किया जाता है. get_type का इस्तेमाल किसी अन्य ऑब्जेक्ट के लिए किया जाता है. सर्विस क्लाइंट क्लास को वर्शन पाथ google/ads/googleads/v*/services/ के तहत कोड में तय किया जाता है. साथ ही, सभी टाइप को अलग-अलग ऑब्जेक्ट कैटगरी google/ads/googleads/v*/common|enums|errors|resources|services/types/ के तहत तय किया जाता है. वर्शन डायरेक्ट्री में मौजूद सारा कोड जनरेट किया जाता है. इसलिए, अगर कोड बेस का स्ट्रक्चर बदलता है, तो ऑब्जेक्ट को सीधे इंपोर्ट करने के बजाय, इन तरीकों का इस्तेमाल करना सबसे सही तरीका है.
यहां दिए गए उदाहरण में, GoogleAdsService क्लाइंट का इंस्टेंस पाने के लिए, get_service तरीके का इस्तेमाल करने का तरीका बताया गया है. इसके अलावा, google-ads v28.4.0 और इसके बाद के वर्शन में, is_async=True को पास करके, एसिंक्रोनस GoogleAdsServiceAsyncClient का इंस्टेंस पाने का तरीका भी बताया गया है:
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 v26 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v26")
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)
यहां दिए गए उदाहरण में, Campaign इंस्टेंस को वापस पाने के लिए, get_type तरीके का इस्तेमाल करने का तरीका बताया गया है:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
campaign = client.get_type("Campaign")
Enums
get_type तरीके का इस्तेमाल करके, enum को वापस पाया जा सकता है. हालांकि, हर GoogleAdsClient इंस्टेंस में एक enums एट्रिब्यूट भी होता है, जो get_type तरीके के जैसे ही डाइनैमिक तौर पर enum लोड करता है. यह इंटरफ़ेस, get_type का इस्तेमाल करने के मुकाबले ज़्यादा आसान है और इसे पढ़ना भी आसान है:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
प्रोटो ऑब्जेक्ट के ऐसे फ़ील्ड जो enum हैं उन्हें 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'>
enum के साथ इंटरैक्ट करने का तरीका इस बात पर निर्भर करता है कि आपने use_proto_plus कॉन्फ़िगरेशन को true पर सेट किया है या false पर. इन दोनों इंटरफ़ेस के बारे में ज़्यादा जानने के लिए, protobuf मैसेज का दस्तावेज़ देखें.
वर्शन
एपीआई के कई वर्शन एक साथ मैनेज किए जाते हैं. v26 सबसे नया वर्शन है. हालांकि, पिछले वर्शन भी तब तक ऐक्सेस किए जा सकते हैं, जब तक उन्हें बंद नहीं कर दिया जाता. लाइब्रेरी में अलग-अलग प्रोटो मैसेज क्लास शामिल होती हैं. ये क्लास, हर चालू एपीआई वर्शन के हिसाब से होती हैं. किसी खास वर्शन के लिए मैसेज क्लास को ऐक्सेस करने के लिए, क्लाइंट को शुरू करते समय version कीवर्ड पैरामीटर दें. इससे, वह हमेशा उस वर्शन का इंस्टेंस दिखाएगा:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
# The Campaign instance will be from the v26 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 v26 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v26"
)
# This loads a specific supported API version (such as v23) of a Campaign.
campaign = client.get_type("Campaign", version="v23")
अगर कोई version कीवर्ड पैरामीटर नहीं दिया गया है, तो लाइब्रेरी डिफ़ॉल्ट रूप से आपके इंस्टॉल किए गए google-ads पैकेज के साथ काम करने वाले सबसे नए एपीआई वर्शन पर सेट हो जाती है. यह वर्शन, सबसे नई रिलीज़ में "v26" है. ध्यान दें कि एपीआई के छोटे रिलीज़ (जैसे कि v25.1) को उनकी मुख्य वर्शन स्ट्रिंग (version="v25") का इस्तेमाल करके ऐक्सेस किया जाता है. सबसे नए और अन्य उपलब्ध वर्शन की अपडेट की गई सूची, एपीआई रेफ़रंस दस्तावेज़ के बाईं ओर मौजूद नेविगेशन सेक्शन में देखी जा सकती है.