Metoda pobierania usług i typów

Pobieranie odniesień do wszystkich różnych klas proto wymaganych do korzystania z interfejsu API w Pythonie może być szczegółowe i wymaga znajomości wbudowanego interfejsu API lub częstego przełączania kontekstu, aby odwoływać się do protos lub dokumentacji.

Metody get_service i get_type klienta

Te 2 metody pobierania umożliwiają 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żywane w przypadku innych obiektów. 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 poniżej katalogu wersji jest generowany, dlatego zalecamy użycie 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 v17 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v17")
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="v17")
campaign = client.get_type("Campaign")

Wartości w polu enum

Chociaż wartości wyliczeniowe można pobierać za pomocą metody get_type, każda instancja GoogleAdsClient ma też atrybut enums, który dynamicznie wczytuje wartości wyliczeniowe przy użyciu tego samego mechanizmu co metoda get_type. Ten interfejs ma być prostszy i czytelniejszy niż get_type:

client = GoogleAdsClient.load_from_storage(version=v17)

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 wyliczenia. Oznacza to, że możesz łatwo odczytać wartość użytkownika. Instancja campaign z poprzedniego przykładu w odpowiedzi w Pythonie:

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

Czasami warto znać nazwę pola, która odpowiada wartości wyliczeniowej, 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'>

Interakcje 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 obu interfejsach znajdziesz w dokumentacji komunikatów protokołu.

Obsługa wersji

Jednocześnie obsługiwane są różne wersje interfejsu API. v17 może być najnowszą wersją, ale wcześniejsze wersje będą dostępne do momentu ich wycofania. Biblioteka będzie zawierać osobne klasy wiadomości proto, które odpowiadają każdej aktywnej wersji interfejsu API. Aby uzyskać dostęp do klasy wiadomości dla określonej wersji, podczas inicjowania klienta podaj parametr słowa kluczowego version, tak aby zawsze zwracał on instancję z danej wersji:

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

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

Jeśli nie podasz parametru słowa kluczowego version, biblioteka domyślnie użyje najnowszej wersji. Zaktualizowana lista najnowszych i innych dostępnych wersji znajduje się w sekcji nawigacji po lewej stronie w dokumentacji interfejsu API.