گیرندگان سرویس و نوع

واکشی ارجاع به تمام کلاس‌های پروتوی مختلف مورد نیاز برای استفاده از API در پایتون می‌تواند پرمخاطب باشد و شما را ملزم می‌کند که درک ذاتی از API یا سوئیچ متنی مکرر برای ارجاع پروتوها یا مستندات داشته باشید.

روش های get_service و get_type مشتری

این دو روش دریافت کننده به شما امکان می دهند هر سرویس یا شیء را در API تایپ کنید. روش get_service برای بازیابی سرویس گیرندگان استفاده می شود. get_type برای هر شی دیگری استفاده می شود. کلاس های سرویس گیرنده در کد در مسیر نسخه google/ads/googleads/v*/services/services/ تعریف می شوند و همه انواع تحت دسته بندی های مختلف شی تعریف می شوند، google/ads/googleads/v*/common|enums|errors|resources|services/types/ . تمام کدهای زیر دایرکتوری نسخه تولید می‌شوند، بنابراین بهترین روش استفاده از این روش‌ها به جای وارد کردن مستقیم اشیاء است، در صورتی که ساختار پایگاه کد تغییر کند.

در اینجا مثالی از نحوه استفاده از روش get_service برای بازیابی نمونه ای از سرویس گیرنده GoogleAdsService آورده شده است.

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

در اینجا مثالی از نحوه استفاده از متد get_type برای بازیابی نمونه Campaign آورده شده است.

from google.ads.googleads.client import GoogleAdsClient

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

Enums

در حالی که می‌توانید از روش get_type برای بازیابی Enums استفاده کنید، هر نمونه GoogleAdsClient همچنین دارای یک ویژگی enums است که به صورت پویا Enums را با استفاده از مکانیزم مشابه با روش get_type بارگیری می‌کند. این رابط نسبت به استفاده از get_type ساده‌تر و راحت‌تر خوانده می‌شود:

client = GoogleAdsClient.load_from_storage(version=v17)

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

فیلدهای Proto Object که enum هستند در پایتون با نوع enum بومی نشان داده می شوند. این بدان معنی است که شما به راحتی می توانید ارزش عضو را بخوانید. کار با نمونه 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 تنظیم کرده باشید، تعامل با enums متفاوت است. برای جزئیات بیشتر در مورد این دو رابط، به مستندات پیام های protobuf مراجعه کنید.

نسخه سازی

چندین نسخه از API به طور همزمان نگهداری می شوند. در حالی که v17 ممکن است آخرین نسخه باشد، نسخه های قبلی هنوز تا غروب آفتاب در دسترس هستند. این کتابخانه شامل کلاس‌های پیام اولیه جداگانه است که با هر نسخه فعال API مطابقت دارد. برای دسترسی به یک کلاس پیام برای یک نسخه خاص، پارامتر کلمه کلیدی version را هنگام مقداردهی اولیه یک کلاینت ارائه کنید تا همیشه نمونه ای از آن نسخه داده شده را برگرداند:

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

همچنین امکان تعیین نسخه در هنگام فراخوانی متدهای get_service و get_type وجود دارد. با انجام این کار، نسخه ارائه شده هنگام اولیه سازی مشتری لغو می شود:

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

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

اگر پارامتر کلمه کلیدی version ارائه نشده باشد، کتابخانه به طور پیش فرض از آخرین نسخه استفاده می کند. فهرست به‌روزرسانی‌شده‌ای از آخرین و سایر نسخه‌های موجود را می‌توانید در بخش ناوبری سمت چپ اسناد مرجع API پیدا کنید.