सेवा और टाइप पाने वाले

Python में एपीआई इस्तेमाल करने के लिए ज़रूरी, सभी अलग-अलग प्रोटो क्लास के रेफ़रंस फ़ेच करने के लिए, आपके पास एपीआई की स्वाभाविक समझ होनी चाहिए. इसके अलावा, प्रोटो या दस्तावेज़ के रेफ़रंस के लिए, बार-बार कॉन्टेक्स्ट बदलने की ज़रूरत भी होती है.

क्लाइंट के 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 v16 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v16")
googleads_service = client.get_service("GoogleAdsService")

यहां Campaign इंस्टेंस को वापस पाने के लिए, get_type तरीके का इस्तेमाल करने के तरीके का उदाहरण दिया गया है.

from google.ads.googleads.client import GoogleAdsClient

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

Enums

Enum को फिर से पाने के लिए, get_type तरीके का इस्तेमाल किया जा सकता है. हालांकि, हर GoogleAdsClient इंस्टेंस में एक enums एट्रिब्यूट भी होता है, जो get_type तरीके वाले तरीके का इस्तेमाल करके, Enum को डाइनैमिक तरीके से लोड करता है. इस इंटरफ़ेस को get_type इस्तेमाल करने के बजाय, और भी आसानी से पढ़ा जा सकता है:

client = GoogleAdsClient.load_from_storage(version=v16)

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

प्रोटो ऑब्जेक्ट फ़ील्ड जो एनम होते हैं उन्हें 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'>

एनम के साथ इंटरैक्ट करना इस आधार पर अलग-अलग होता है कि आपने use_proto_plus कॉन्फ़िगरेशन को true पर सेट किया है या false पर. दो इंटरफ़ेस के बारे में जानकारी के लिए, प्रोटोबफ़ मैसेज का दस्तावेज़ देखें.

वर्शन

एक ही समय में एपीआई के कई वर्शन मैनेज किए जाते हैं. हालांकि, v16 नया वर्शन हो सकता है, लेकिन इसके बंद होने तक, पुराने वर्शन को ऐक्सेस किया जा सकता है. इस लाइब्रेरी में, हर ऐक्टिव एपीआई वर्शन से जुड़ी अलग-अलग प्रोटो मैसेज क्लास शामिल होंगी. किसी खास वर्शन की मैसेज क्लास ऐक्सेस करने के लिए, क्लाइंट को शुरू करते समय version कीवर्ड पैरामीटर दें, ताकि यह उस वर्शन से इंस्टेंस दिखा सके:

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

get_service और get_type वाले तरीकों को कॉल करते समय, वर्शन के बारे में भी बताया जा सकता है. ऐसा करने से, क्लाइंट को शुरू करते समय दिया गया वर्शन बदल जाएगा:

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

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

अगर कोई version कीवर्ड पैरामीटर नहीं दिया गया है, तो लाइब्रेरी डिफ़ॉल्ट रूप से सबसे नए वर्शन का इस्तेमाल करेगी. नए और अन्य उपलब्ध वर्शन की अपडेट की गई सूची, एपीआई रेफ़रंस दस्तावेज़ के बाईं ओर मौजूद नेविगेशन सेक्शन में देखी जा सकती है.