Dienst- und Typabrufer

Das Abrufen von Referenzen auf alle verschiedenen Proto-Klassen, die für die Verwendung der API in Python erforderlich sind, kann sehr langwierig sein und erfordert ein grundlegendes Verständnis der API oder häufige Kontextwechsel, um auf die Proto-Klassen oder die Dokumentation zu verweisen.

Die Methoden get_service und get_type des Clients

Mit diesen beiden Getter-Methoden können Sie beliebige Dienst- oder Typobjekte 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/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. Daher empfiehlt es sich, diese Methoden zu verwenden, anstatt die Objekte direkt zu importieren, falls sich die Struktur der Codebasis ändert.

Hier ist ein Beispiel dafür, wie du mit der get_service-Methode eine Instanz des GoogleAdsService-Clients abrufen kannst.

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

Hier ein Beispiel für die Verwendung der get_type-Methode zum Abrufen einer Campaign-Instanz.

from google.ads.googleads.client import GoogleAdsClient

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

Enums

Sie können zwar die Methode get_type zum Abrufen von Enums verwenden, aber jede GoogleAdsClient-Instanz hat auch ein enums-Attribut, mit dem Enums dynamisch mit demselben Mechanismus wie die Methode get_type geladen werden. Diese Benutzeroberfläche soll einfacher und leichter zu lesen sein als get_type:

client = GoogleAdsClient.load_from_storage(version=v18)

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. So können Sie den Wert des Elements ganz einfach ablesen. So verwenden Sie die Instanz campaign 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 hilfreich, den Namen des Felds zu kennen, das dem enum-Wert entspricht, wie oben gezeigt. Sie können über das name-Attribut auf diese Informationen zugreifen:

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

Die Interaktion mit Enumerationen unterscheidet sich, je nachdem, ob die use_proto_plus-Konfiguration auf true oder false festgelegt ist. Weitere Informationen zu den beiden Schnittstellen finden Sie in der Dokumentation zu protobuf-Nachrichten.

Versionsverwaltung

Es werden gleichzeitig mehrere Versionen der API verwaltet. v18 ist zwar die aktuelle Version, aber frühere Versionen sind bis zu ihrer Einstellung weiterhin verfügbar. Die Bibliothek enthält separate Proto-Nachrichtenklassen, die den einzelnen aktiven API-Versionen entsprechen. Wenn du auf eine Nachrichtenklasse für eine bestimmte Version zugreifen möchtest, gib beim Initialisieren eines Clients den Keyword-Parameter version an, damit immer eine Instanz aus dieser Version zurückgegeben wird:

client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v18/")
# The Campaign instance will be from the v18 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 v18 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v18")

client = GoogleAdsService.load_from_storage(version="v18")
# This will load the v16 version of a Campaign.
campaign = client.get_type("Campaign", version="v16")

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