Metoda pobierania usług i typów

Pobieranie odniesień do wszystkich klas proto wymaganych do korzystania z interfejsu API w Pythonie może być szczegółowe i wymagać znajomości interfejsu API lub częstego przełącznika kontekstu w celu odwoływania się do protokołów lub dokumentacji.

Metody get_service i get_type klienta

Te 2 metody pobierania pozwalają na pobranie dowolnej usługi lub typu obiektu w interfejsie API. Metoda get_service służy do pobierania klientów usługi. get_type jest używany w przypadku każdego innego obiektu. Klasy klienta usługi są zdefiniowane w kodzie w ścieżce wersji google/ads/googleads/v*/services/services/, a wszystkie typy są zdefiniowane w różnych kategoriach obiektów: google/ads/googleads/v*/common|enums|errors|resources|services/types/. Cały kod znajdujący się w katalogu wersji jest generowany, dlatego w przypadku zmiany struktury bazy kodu warto użyć tych metod, zamiast bezpośrednio importować obiekty.

Oto przykład użycia metody get_service do pobrania instancji klienta 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 v16 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v16")
googleads_service = client.get_service("GoogleAdsService")

Oto przykład użycia metody get_type do pobrania instancji Campaign.

from google.ads.googleads.client import GoogleAdsClient

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

Wartości w polu enum

Do pobierania wyliczeń możesz używać metody get_type, ale każda instancja GoogleAdsClient ma też atrybut enums, który dynamicznie wczytuje wartości wyliczeniowe za pomocą tego samego mechanizmu co metoda get_type. Ma to być prostszy i czytelniejszy interfejs niż korzystanie z get_type:

client = GoogleAdsClient.load_from_storage(version=v16)

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

Pola obiektów Proto, które są wyliczeniami, są reprezentowane w Pythonie przez natywny typ enum. Dzięki temu można łatwo odczytać wartość danego użytkownika. Praca z instancją campaign z poprzedniego przykładu w repl w Pythonie:

>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3

Czasami warto znać nazwę pola, które odpowiada wartości wyliczenia, jak pokazano powyżej. Te informacje możesz uzyskać za pomocą atrybutu name:

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

Interakcja z wyliczeniami różni się w zależności od tego, czy konfigurację use_proto_plus masz ustawioną na true czy false. Szczegółowe informacje o tych 2 interfejsach znajdziesz w dokumentacji komunikatów protokołu.

Obsługa wersji

Jednocześnie istnieje wiele wersji interfejsu API. v16 może być najnowszą wersją, ale wcześniejsze wersje będą dostępne do momentu ich wycofania. Biblioteka będzie zawierać osobne klasy proto wiadomości odpowiadające każdej aktywnej wersji interfejsu API. Aby uzyskać dostęp do klasy wiadomości w konkretnej wersji, podczas inicjowania klienta podaj parametr słowa kluczowego version. Dzięki temu zawsze będzie on zwracać instancję z tej wersji:

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")

Możesz też określić wersję podczas wywoływania metod get_service i get_type. Spowoduje to zastąpienie wersji podanej podczas inicjowania klienta:

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")

Jeśli nie podasz parametru słowa kluczowego version, biblioteka domyślnie użyje najnowszej wersji. Aktualną listę najnowszych i innych dostępnych wersji znajdziesz w sekcji nawigacji po lewej stronie w dokumentacji dokumentacji API.