Metoda pobierania usług i typów

Pobieranie odwołań do wszystkich różnych klas proto wymaganych do korzystania z interfejsu API w Pythonie może być rozwlekłe i wymagać od Ciebie wrodzonego zrozumienia interfejsu API lub częstego przełączania kontekstu w celu odwoływania się do proto lub dokumentacji.

Metody get_service i get_type klienta

Te 2 metody pobierania umożliwiają pobieranie dowolnego obiektu usługi lub typu w interfejsie API. Metoda get_service służy do pobierania klientów usług. Metoda get_type jest używana w przypadku wszystkich innych obiektów. Klasy klientów usług 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 w katalogu wersji jest generowany, dlatego zalecamy używanie tych metod zamiast bezpośredniego importowania obiektów na wypadek zmiany struktury bazy kodu.

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 v24 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v24")
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="v24")
campaign = client.get_type("Campaign")

Wartości w polu enum

Chociaż do pobierania wartości w polu enum możesz używać metody get_type, każda instancja GoogleAdsClient ma też atrybut enums, który dynamicznie wczytuje wartości w polu enum za pomocą tego samego mechanizmu co metoda get_type. Ten interfejs ma być prostszy i łatwiejszy do odczytania niż używanie metody get_type:

client = GoogleAdsClient.load_from_storage(version=v24)

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

Pola obiektów proto, które są wartościami w polu enum, są reprezentowane w Pythonie przez natywny typ enum. Oznacza to, że możesz łatwo odczytać wartość elementu. Praca z instancją campaign z poprzedniego przykładu w Python repl:

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

Czasami warto znać nazwę pola odpowiadającego wartości w polu enum, jak pokazano powyżej. Możesz uzyskać dostęp do tych informacji za pomocą atrybutu name:

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

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

Obsługa wersji

Jednocześnie utrzymywanych jest kilka wersji interfejsu API. Chociaż v24 może być najnowszą wersją, wcześniejsze wersje są nadal dostępne do czasu ich wycofania. Biblioteka będzie zawierać oddzielne klasy komunikatów proto, które odpowiadają każdej aktywnej wersji interfejsu API. Aby uzyskać dostęp do klasy wiadomości w określonej wersji, podczas inicjowania klienta podaj parametr słowa kluczowego version, aby zawsze zwracał instancję z danej wersji:

client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v24/")
# The Campaign instance will be from the v24 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 v24 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v24")

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

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 dokumentacji referencyjnej interfejsu API.