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 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. Dienstclient-Klassen werden im Code unter dem Versionspfad google/ads/googleads/v*/services/services/
definiert und alle Typen werden unter den verschiedenen Objektkategorien google/ads/googleads/v*/common|enums|errors|resources|services/types/
definiert.
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.
Hier ist ein Beispiel für die Verwendung der Methode get_service
zum Abrufen einer Instanz des GoogleAdsService
-Clients.
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 v20 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v20")
googleads_service = client.get_service("GoogleAdsService")
Hier ist ein Beispiel für die Verwendung der Methode get_type
zum Abrufen einer Campaign
-Instanz.
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage(version="v20")
campaign = client.get_type("Campaign")
Enums
Sie können zwar die Methode get_type
verwenden, um Enums abzurufen, aber jede GoogleAdsClient
-Instanz hat 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 die Verwendung von get_type
:
client = GoogleAdsClient.load_from_storage(version=v20)
campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED
Proto-Objektfelder, die Enums sind, werden in Python durch den nativen Typ enum dargestellt. Das bedeutet, dass Sie den Wert des Mitglieds ganz einfach lesen können. So arbeiten Sie mit der campaign
-Instanz aus dem vorherigen Beispiel in einem 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 oben gezeigten 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. v20
ist zwar die aktuelle Version, aber frühere Versionen sind weiterhin verfügbar, bis sie eingestellt werden. Die Bibliothek enthält separate Protobuf-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 Keyword-Parameter version
an, damit immer eine Instanz aus der angegebenen Version zurückgegeben wird:
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v20/")
# The Campaign instance will be from the v20 version of the API.
campaign = client.get_type("Campaign")
Es ist auch möglich, die Version beim Aufrufen der Methoden get_service
und get_type
anzugeben. Dadurch wird die Version überschrieben, die beim Initialisieren des Clients angegeben wurde:
client = GoogleAdsService.load_from_storage()
# This will load the v20 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v20")
client = GoogleAdsService.load_from_storage(version="v20")
# This will load the v18 version of a Campaign.
campaign = client.get_type("Campaign", version="v18")
Wenn kein version
-Schlüsselwortparameter angegeben ist, wird standardmäßig die neueste Version der Bibliothek verwendet. Eine aktualisierte Liste der neuesten und anderer verfügbarer Versionen finden Sie im linken Navigationsbereich der API-Referenzdokumentation.