Pobieranie odwołań do wszystkich różnych klas proto wymaganych do korzystania z interfejsu API w Pythonie może być złożone i wymagać wrodzonej znajomości 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 dwie metody pobierania umożliwiają pobranie dowolnego obiektu usługi lub typu w interfejsie API. Metoda get_service
służy do pobierania klientów usług. get_type
jest używany 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 gdyby struktura bazy kodu uległa zmianie.
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 v20 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v20")
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="v20")
campaign = client.get_type("Campaign")
Wartości w polu enum
Chociaż do pobierania wyliczeń możesz używać metody get_type
, każda instancja GoogleAdsClient
ma też atrybut enums
, który dynamicznie wczytuje wyliczenia przy użyciu tego samego mechanizmu co metoda get_type
. Ten interfejs jest prostszy i łatwiejszy do odczytania niż get_type
:
client = GoogleAdsClient.load_from_storage(version=v20)
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. Oznacza to, że możesz łatwo odczytać wartość członka. Praca z instancją campaign
z poprzedniego przykładu w replu Pythona:
>>> 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 wyliczeniowej, jak pokazano powyżej. Dostęp do tych informacji 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 konfiguracja use_proto_plus
jest ustawiona na true
czy false
. Szczegółowe informacje o tych 2 interfejsach znajdziesz w dokumentacji wiadomości protokołu buforów.
Obsługa wersji
Jednocześnie utrzymywanych jest kilka wersji interfejsu API. Chociaż v20
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 przypadku konkretnej 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/v20/")
# The Campaign instance will be from the v20 version of the API.
campaign = client.get_type("Campaign")
Wersję można też określić 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 v20 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v20")
client = GoogleAdsService.load_from_storage(version="v20")
# This will load the v18 version of a Campaign.
campaign = client.get_type("Campaign", version="v18")
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 przewodnika po interfejsie API.