Das Abrufen von Verweisen auf alle verschiedenen Proto-Klassen, die für die Verwendung der API in Python erforderlich sind, kann sehr aufwendig sein. Außerdem müssen Sie die API gut kennen oder häufig den Kontext wechseln, 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 jedes Dienst- oder Typobjekt in der API abrufen. Die Methode get_service wird verwendet, um Dienstclients abzurufen. 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 werden unter den verschiedenen Objektkategorien google/ads/googleads/v*/common|enums|errors|resources|services/types/ definiert. Der gesamte Code im Versionsverzeichnis wird generiert. Es empfiehlt sich daher, 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 (oder eine asynchrone GoogleAdsServiceAsyncClient in google-ads v28.4.0 und höher, indem Sie is_async=True übergeben):
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)
Im folgenden Beispiel wird gezeigt, wie Sie mit der Methode get_type eine Campaign-Instanz abrufen:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v26")
campaign = client.get_type("Campaign")
Enums
Sie können die Methode get_type verwenden, um Enums abzurufen. Jede GoogleAdsClient-Instanz hat aber auch ein enums-Attribut, das Enums dynamisch mit demselben Mechanismus wie die Methode get_type lädt. Diese Schnittstelle ist einfacher und leichter zu lesen als die Verwendung von 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
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. Arbeiten 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 mit dem 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. v26 ist zwar die aktuelle Version, aber frühere Versionen sind weiterhin verfügbar, bis sie eingestellt werden. Die Bibliothek enthält separate Proto-Nachrichtenklassen, die den einzelnen aktiven API-Versionen 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 eine Instanz dieser Version zurückgegeben wird:
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")
Wenn Sie beim Initialisieren des Clients keine 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, werden alle an get_service oder get_type übergebenen version-Argumente überschrieben:
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")
Wenn kein Keyword-Parameter version angegeben ist, verwendet die Bibliothek standardmäßig die höchste API-Version, die von Ihrem installierten google-ads-Paket unterstützt wird ("v26" in der neuesten Version). Beachten Sie, dass auf Nebenversionen der API (z. B. v25.1) über den String der Hauptversion (version="v25") zugegriffen wird. Eine aktualisierte Liste der neuesten und anderen verfügbaren Versionen finden Sie im linken Navigationsbereich der API-Referenzdokumentation.