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

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 v18 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v18")
googleads_service = client.get_service("GoogleAdsService")

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

from google.ads.googleads.client import GoogleAdsClient

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

Enums

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

client = GoogleAdsClient.load_from_storage(version=v18)

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

कभी-कभी, ऊपर दिखाए गए उदाहरण की तरह, सूची वाली वैल्यू से जुड़े फ़ील्ड का नाम जानना मददगार होता है. इस जानकारी को ऐक्सेस करने के लिए, name एट्रिब्यूट का इस्तेमाल करें:

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

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

वर्शन

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

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

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

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

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

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