Dienst- und Typabrufer

Das Abrufen von Verweisen auf alle für die Verwendung der API in Python erforderlichen Proto-Klassen kann sehr umfangreich sein und erfordert ein intrinsisches Verständnis der API oder einen häufigen Kontextwechsel, um auf die Protos oder die Dokumentation zu verweisen.

Die Methoden get_service und get_type des Clients

Mit diesen beiden Getter-Methoden können Sie jeden Dienst oder jedes Typobjekt in der API abrufen. Die Methode get_service wird zum Abrufen von Dienstclients verwendet. get_type wird für alle anderen Objekte verwendet. Dienstclient-Klassen werden im Code unter dem Versionspfad google/ads/googleads/v*/services/services/ und alle Typen unter den verschiedenen Objektkategorien (google/ads/googleads/v*/common|enums|errors|resources|services/types/) definiert. Der gesamte Code unterhalb des Versionsverzeichnisses wird generiert. Daher empfiehlt es sich, diese Methoden zu verwenden, anstatt die Objekte direkt zu importieren, falls sich die Struktur der Codebasis ändert.

Das folgende Beispiel zeigt, wie Sie mit der Methode get_service eine Instanz des GoogleAdsService-Clients 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 v17 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v17")
googleads_service = client.get_service("GoogleAdsService")

Das folgende Beispiel zeigt, wie Sie mit der Methode get_type eine Campaign-Instanz abrufen.

from google.ads.googleads.client import GoogleAdsClient

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

Enums

Sie können Enums mit der Methode get_type abrufen. Jede GoogleAdsClient-Instanz hat aber auch ein enums-Attribut, das Enums dynamisch mit demselben Mechanismus wie die Methode get_type lädt. Diese Oberfläche soll einfacher und leichter zu lesen sein als die Verwendung von get_type:

client = GoogleAdsClient.load_from_storage(version=v17)

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

Proto-Objektfelder, bei denen es sich um Enums handelt, werden in Python durch den nativen Typ enum dargestellt. Das bedeutet, dass Sie den Wert des Mitglieds leicht lesen können. Mit der Instanz campaign aus dem vorherigen Beispiel in einem Python-Repository:

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

Manchmal ist es hilfreich, den Namen des Felds zu kennen, das dem enum-Wert entspricht (siehe oben). 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 Sie die use_proto_plus-Konfiguration auf true oder false festgelegt haben. Weitere Informationen zu den beiden Schnittstellen finden Sie in der Dokumentation zu protobuf-Nachrichten.

Versionsverwaltung

Es werden mehrere Versionen der API gleichzeitig verwaltet. v17 ist zwar möglicherweise die neueste Version, ältere Versionen sind jedoch bis zum Ablauf noch zugänglich. Die Bibliothek enthält separate Proto-Nachrichtenklassen, die der jeweiligen aktiven API-Version entsprechen. Wenn Sie auf eine Nachrichtenklasse für eine bestimmte Version zugreifen möchten, geben Sie beim Initialisieren eines Clients den Schlüsselwortparameter version an, damit immer die Instanz der angegebenen Version zurückgegeben wird:

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

Die Version kann auch beim Aufrufen der Methoden get_service und get_type angegeben werden. Dadurch wird die Version überschrieben, die beim Initialisieren des Clients angegeben wurde:

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

Wenn kein Schlüsselwortparameter version angegeben wird, verwendet die Bibliothek standardmäßig die neueste Version. Eine aktualisierte Liste der neuesten und weiterer verfügbaren Versionen finden Sie im linken Navigationsbereich der API-Referenzdokumentation.