Getter für Dienst und Typ

Das Abrufen von Verweisen auf alle verschiedenen Proto-Klassen, die für die Verwendung der API in Python erforderlich sind, kann sehr ausführlich sein und erfordert, dass Sie die API genau kennen oder häufig zwischen Kontexten wechseln, um auf die Protos oder die Dokumentation zu verweisen.

Die get_service- und get_type-Methoden des Clients

Mit diesen beiden Getter-Methoden können Sie jedes Dienst- oder Typobjekt in der API abrufen. Mit der Methode get_service werden Dienstclients abgerufen. get_type wird für alle anderen Objekte verwendet. Dienstclientklassen werden im Code unter dem Versionspfad google/ads/googleads/v*/services/ definiert und alle Typen unter den verschiedenen Objektkategorien google/ads/googleads/v*/common|enums|errors|resources|services/types/. Der gesamte Code unter dem Versionsverzeichnis wird generiert. Es empfiehlt sich daher, diese Methoden zu verwenden, anstatt die Objekte direkt zu importieren, falls sich die Struktur der Codebasis ändert.

Im folgenden Beispiel wird gezeigt, wie Sie mit der Methode get_service eine Instanz des GoogleAdsService-Clients (oder einen asynchronen GoogleAdsServiceAsyncClient in google-ads v28.4.0 und später durch Übergeben von is_async=True) abrufen:

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

Das folgende Beispiel zeigt, wie die Methode get_type verwendet wird, um eine Campaign-Instanz abzurufen:

from google.ads.googleads.client import GoogleAdsClient

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

Enums

Sie können zwar die Methode get_type verwenden, um Enums abzurufen, jede GoogleAdsClient-Instanz hat aber auch ein enums-Attribut, mit dem Enums dynamisch über denselben Mechanismus wie die Methode get_type geladen werden. Diese Schnittstelle ist einfacher und leichter zu lesen als get_type:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v25")

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

Proto-Objektfelder, die Enums sind, werden in Python durch den integrierten Typ enum dargestellt. Das bedeutet, dass Sie den Wert des Mitglieds direkt lesen können. So arbeiten Sie mit der campaign-Instanz aus dem vorherigen Beispiel in einer Python-REPL:

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

Manchmal ist es nützlich, den Namen des Felds zu kennen, das dem Enum-Wert entspricht. Sie können über das Attribut name auf diese Informationen zugreifen:

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

Die Interaktion mit Enums hängt davon ab, ob die Konfiguration use_proto_plus auf true oder false festgelegt ist. Weitere Informationen zu den beiden Schnittstellen finden Sie in der Dokumentation zu Protobuf-Nachrichten.

Versionsverwaltung

Es werden mehrere Versionen der API gleichzeitig verwaltet. v25 ist die aktuelle Version. Frühere Versionen sind jedoch weiterhin verfügbar, bis sie eingestellt werden. Die Bibliothek enthält separate Proto-Nachrichtenklassen, die jeder aktiven API-Version entsprechen. Wenn Sie auf eine Nachrichtenklasse für eine bestimmte Version zugreifen möchten, geben Sie beim Initialisieren eines Clients den Keyword-Parameter version an, damit immer eine Instanz aus dieser Version zurückgegeben wird:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v25")
# The Campaign instance will be from the v25 version of the API.
campaign = client.get_type("Campaign")

Wenn Sie beim Initialisieren des Clients keinen version angeben, können Sie die Version pro Aufruf angeben, wenn Sie die Methoden get_service und get_type aufrufen. Wenn version beim Initialisieren von GoogleAdsClient festgelegt ist, wird jedes version-Argument, das an get_service oder get_type übergeben wird, überschrieben:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage()
# This loads the v25 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v25"
)

# This loads a specific supported API version (such as v23) of a Campaign.
campaign = client.get_type("Campaign", version="v23")

Wenn kein version-Keyword-Parameter angegeben wird, verwendet die Bibliothek standardmäßig die höchste API-Version, die von Ihrem installierten google-ads-Paket unterstützt wird ("v25" in der neuesten Version). Auf untergeordnete API-Releases (z. B. v25.1) wird über den String der Hauptversion (version="v25") zugegriffen. Eine aktualisierte Liste der neuesten und anderer verfügbarer Versionen finden Sie im linken Navigationsbereich der API-Referenzdokumentation.