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

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

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

from google.ads.googleads.client import GoogleAdsClient

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

Enums

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

client = GoogleAdsClient.load_from_storage(version=v21)

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

Proto ऑब्जेक्ट के ऐसे फ़ील्ड जो 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'>

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

वर्शन

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

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

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

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

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

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