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 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/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 Clients 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 v23 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v23")
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="v23")
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 die Verwendung von get_type:
client = GoogleAdsClient.load_from_storage(version=v23)
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 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 oben gezeigten Enum-Wert entspricht. Sie können auf diese Informationen über das Attribut name 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. v23 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 der angegebenen Version zurückgegeben wird:
client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v23/")
# The Campaign instance will be from the v23 version of the API.
campaign = client.get_type("Campaign")
Sie können die Version auch beim Aufrufen der Methoden get_service und get_type angeben. Dadurch wird die Version überschrieben, die beim Initialisieren des Clients angegeben wurde:
client = GoogleAdsService.load_from_storage()
# This will load the v23 version of the GoogleAdsService.
googleads_service = client.get_service(
"GoogleAdsService", version="v23")
client = GoogleAdsService.load_from_storage(version="v23")
# This will load the v21 version of a Campaign.
campaign = client.get_type("Campaign", version="v21")
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.