Pobieranie odwołań do wszystkich klas proto wymaganych do korzystania z interfejsu API w języku Python może być czasochłonne i wymagać dogłębnego zrozumienia interfejsu API lub częstego przełączania kontekstu w celu odwoływania się do plików proto lub dokumentacji.
Metody get_service i get_type klienta
Te 2 metody pobierające umożliwiają pobranie dowolnego obiektu usługi lub typu w interfejsie API. Metoda get_service służy do pobierania klientów usługi. get_type jest używany w przypadku innych obiektów. Klasy klienta usługi są zdefiniowane w kodzie w ścieżce wersji google/ads/googleads/v*/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, więc sprawdzoną metodą jest używanie tych metod zamiast bezpośredniego importowania obiektów na wypadek zmiany struktury bazy kodu.
Poniższy przykład pokazuje, jak użyć metody get_service, aby pobrać instancję klienta GoogleAdsService (lub asynchronicznego GoogleAdsServiceAsyncClient w google-ads v28.4.0 i nowszych wersjach przez przekazanie is_async=True):
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 v26 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v26")
googleads_service = client.get_service("GoogleAdsService")
# Supported in google-ads v28.4.0 and later: retrieve an async service client.
googleads_async_service = client.get_service("GoogleAdsService", is_async=True)
Poniższy przykład pokazuje, jak użyć metody get_type, aby pobrać instancję Campaign:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
campaign = client.get_type("Campaign")
Wartości w polu enum
Do pobierania typów wyliczeniowych możesz używać metody get_type, ale każda instancja GoogleAdsClient ma też atrybut enums, który dynamicznie wczytuje typy wyliczeniowe za pomocą tego samego mechanizmu co metoda get_type. Ten interfejs jest prostszy i łatwiejszy do odczytania niż get_type:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
Pola obiektów proto, które są typami wyliczeniowymi, są reprezentowane w Pythonie przez wbudowany typ enum. Oznacza to, że możesz bezpośrednio 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, które odpowiada wartości typu wyliczeniowego. 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 typami wyliczeniowymi różni się w zależności od tego, czy konfiguracja use_proto_plus jest ustawiona na true czy false. Szczegółowe informacje o obu interfejsach znajdziesz w dokumentacji wiadomości protobuf.
Obsługa wersji
Jednocześnie obsługiwanych jest wiele wersji interfejsu API. Chociaż v26 jest najnowszą wersją, wcześniejsze wersje są nadal dostępne, dopóki nie zostaną wycofane. Biblioteka zawiera osobne klasy komunikatów proto, które odpowiadają każdej aktywnej wersji interfejsu API. Aby uzyskać dostęp do klasy wiadomości dla konkretnej wersji, podaj parametr słowa kluczowego version podczas inicjowania klienta, aby zawsze zwracał instancję z danej wersji:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
# The Campaign instance will be from the v26 version of the API.
campaign = client.get_type("Campaign")
Jeśli nie określisz parametru version podczas inicjowania klienta, możesz określić wersję dla każdego wywołania podczas wywoływania metod get_service i get_type (pamiętaj, że jeśli parametr version jest ustawiony podczas inicjowania GoogleAdsClient, zastępuje on każdy argument version przekazany do get_service lub get_type):
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
# This loads the v26 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v26"
)
# This loads a specific supported API version (such as v23) of a Campaign.
campaign = client.get_type("Campaign", version="v23")
Jeśli nie podasz parametru słowa kluczowego version, biblioteka domyślnie użyje najwyższej wersji interfejsu API obsługiwanej przez zainstalowany pakiet google-ads ("v26" w najnowszej wersji). Pamiętaj, że do wersji podrzędnych interfejsu API (np. v25.1) można uzyskać dostęp za pomocą ciągu znaków wersji głównej (version="v25"). Zaktualizowaną listę najnowszych i innych dostępnych wersji znajdziesz w sekcji nawigacyjnej po lewej stronie w dokumentacji interfejsu API.