In diesem Leitfaden wird erläutert, wie die Google Ads API Fehler verarbeitet und kommuniziert. Die Struktur und Bedeutung von API-Fehlern zu verstehen, ist entscheidend für die Entwicklung robuster Anwendungen, die Probleme wie ungültige Eingaben oder vorübergehende Dienstausfälle ordnungsgemäß verarbeiten können.
Die Google Ads API folgt dem standardmäßigen Google API-Fehlermodell, das auf gRPC-Statuscodes basiert. Jede API-Antwort, die zu einem Fehler führt, enthält ein Status-Objekt mit folgenden Informationen:
- Ein numerischer Fehlercode.
- Eine Fehlermeldung.
- Optionale zusätzliche Fehlerdetails.
Kanonische Fehlercodes
In der Google Ads API wird eine Reihe von kanonischen Fehlercodes verwendet, die von gRPC und HTTP definiert werden. Diese Codes geben einen allgemeinen Hinweis auf den Fehlertyp. Sie sollten immer zuerst diesen numerischen Code prüfen, um die grundlegende Art des Problems zu verstehen.
In der folgenden Tabelle sind die häufigsten Codes zusammengefasst, die bei der Verwendung der Google Ads API auftreten können:
| gRPC-Code | HTTP-Code | Enum-Name | Beschreibung | Anleitung |
|---|---|---|---|---|
| 0 | 200 | OK |
Kein Fehler; weist auf einen Erfolg hin. | – |
| 1 | 499 | CANCELLED |
Der Vorgang wurde abgebrochen, in der Regel vom Client. | Bedeutet normalerweise, dass der Client nicht mehr wartet. Prüfen Sie die clientseitigen Zeitüberschreitungen. |
| 2 | 500 | UNKNOWN |
Ein unbekannter Fehler ist aufgetreten. Weitere Informationen finden Sie möglicherweise in der Fehlermeldung oder den Fehlerdetails. | Als Serverfehler behandeln. Kann oft mit Backoff wiederholt werden. |
| 3 | 400 | INVALID_ARGUMENT |
Der Client hat ein ungültiges Argument angegeben. Dies weist auf ein Problem hin, das die API daran hindert, die Anfrage zu verarbeiten, z. B. einen fehlerhaften Ressourcennamen oder einen ungültigen Wert. | Clientfehler: Prüfen Sie Ihre Anfrageparameter und achten Sie darauf, dass sie den API-Anforderungen entsprechen. Die Fehlerdetails enthalten in der Regel Informationen darüber, welches Argument ungültig war und wie. Verwenden Sie diese Details, um die Anfrage zu korrigieren. Wiederholen Sie den Vorgang nicht, ohne die Anfrage zu korrigieren. |
| 4 | 504 | DEADLINE_EXCEEDED |
Die Frist ist abgelaufen, bevor der Vorgang abgeschlossen werden konnte. | Serverfehler: Oft vorübergehend. Versuchen Sie es mit exponentiellem Backoff noch einmal. |
| 5 | 404 | NOT_FOUND |
Eine angeforderte Entität, z. B. eine Kampagne oder Anzeigengruppe, wurde nicht gefunden. | Clientfehler: Prüfen Sie, ob die Ressourcen, auf die Sie zugreifen möchten, vorhanden sind und ob die IDs korrekt sind. Versuchen Sie es nicht ohne Korrektur noch einmal. |
| 6 | 409 | ALREADY_EXISTS |
Die Entität, die der Client erstellen wollte, ist bereits vorhanden. | Clientfehler: Vermeiden Sie das Erstellen doppelter Ressourcen. Prüfen Sie, ob die Ressource bereits vorhanden ist, bevor Sie versuchen, sie zu erstellen. |
| 7 | 403 | PERMISSION_DENIED |
Der Aufrufer hat keine Berechtigung zur Ausführung des angegebenen Vorgangs. | Clientfehler: Prüfen Sie die Authentifizierung, die Autorisierung und die Nutzerrollen für das Google Ads-Konto. Versuchen Sie es nicht noch einmal, ohne die Berechtigungen zu klären. |
| 8 | 429 | RESOURCE_EXHAUSTED |
Entweder ist eine Ressource erschöpft (z. B. weil Sie Ihr Kontingent überschritten haben) oder ein System ist überlastet. | Client-/Serverfehler: In der Regel ist Warten erforderlich. Implementieren Sie einen exponentiellen Backoff und reduzieren Sie möglicherweise die Anforderungsrate. Siehe API-Limits und -Kontingente. |
| 9 | 400 | FAILED_PRECONDITION |
Der Vorgang wurde abgelehnt, weil der Systemzustand nicht für die Ausführung des Vorgangs geeignet ist. Beispiel: Ein Pflichtfeld fehlt. | Clientfehler: Die Anfrage ist gültig, aber der Status ist falsch. Sehen Sie sich die Fehlerdetails an, um den Fehler bei der Vorbedingung zu verstehen. Versuchen Sie es nicht noch einmal, ohne den Status zu korrigieren. |
| 10 | 409 | ABORTED |
Der Vorgang wurde abgebrochen, in der Regel aufgrund eines Nebenläufigkeitsproblems wie eines Transaktionskonflikts. | Serverfehler: Ein Wiederholungsversuch mit einem kurzen Backoff ist oft sicher. |
| 11 | 400 | OUT_OF_RANGE |
Beim Vorgang wurde versucht, den gültigen Bereich zu überschreiten. | Clientfehler: Korrigieren Sie den Bereich oder Index. |
| 12 | 501 | UNIMPLEMENTED |
Der Vorgang ist nicht implementiert oder wird von der API nicht unterstützt. | Clientfehler: Prüfen Sie die API-Version und die verfügbaren Funktionen. Versuchen Sie es nicht noch einmal. |
| 13 | 500 | INTERNAL |
Es ist ein interner Fehler aufgetreten. Dies ist ein allgemeiner Sammelbegriff für serverseitige Probleme. | Serverfehler: Kann in der Regel mit exponentiellem Backoff wiederholt werden. Wenn das Problem weiterhin besteht, melden Sie es. |
| 14 | 503 | UNAVAILABLE |
Dieser Dienst ist vorübergehend nicht verfügbar. Dies ist höchstwahrscheinlich ein vorübergehender Zustand. | Serverfehler: Es wird dringend empfohlen, es mit exponentiellem Backoff noch einmal zu versuchen. |
| 15 | 500 | DATA_LOSS |
Nicht wiederherstellbarer Datenverlust oder Datenkorruption. | Serverfehler: Selten. Weist auf ein schwerwiegendes Problem hin. Versuchen Sie es nicht noch einmal. Wenn das Problem weiterhin besteht, melden Sie es. |
| 16 | 401 | UNAUTHENTICATED |
Die Anfrage enthält keine gültigen Authentifizierungsdaten. | Clientfehler: Prüfen Sie Ihre Authentifizierungstokens und Anmeldedaten. Versuchen Sie es nicht noch einmal, ohne die Authentifizierung zu korrigieren. |
Weitere Informationen zu diesen Codes finden Sie im API-Designleitfaden – Fehlercodes.
Fehlerdetails verstehen
Zusätzlich zum Code auf oberster Ebene bietet die Google Ads API im Feld details des Status-Objekts spezifischere Fehlerinformationen. Dieses Feld enthält häufig ein GoogleAdsFailure-Proto, das eine Liste einzelner GoogleAdsError-Objekte enthält.
Jedes GoogleAdsFailure-Objekt enthält:
errors: Eine Liste vonGoogleAdsError-Objekten, die jeweils einen bestimmten aufgetretenen Fehler beschreiben.request_id: Eine eindeutige ID für die Anfrage, die für die Fehlerbehebung und den Support nützlich ist.
Jedes GoogleAdsError-Objekt bietet Folgendes:
error_code: Ein detaillierterer, Google Ads API-spezifischerErrorCode(häufige Fehler), z. B.AuthenticationError.NOT_ADS_USER.message: Eine menschenlesbare Beschreibung des spezifischen Fehlers.trigger: DerValue, der den Fehler verursacht hat, falls zutreffend.location: EinErrorLocation, das beschreibt, wo in der Anfrage der Fehler aufgetreten ist, einschließlich Feldpfaden.details: ZusätzlicheErrorDetails, z. B. nicht veröffentlichte Fehlerursachen.
Beispiel für Fehlerdetails
Wenn Sie einen Fehler erhalten, können Sie über Ihre Clientbibliothek auf diese Details zugreifen. Beispiel: Ein INVALID_ARGUMENT (Code 3) könnte die folgenden GoogleAdsFailure-Details haben:
{
"code": 3,
"message": "The request was invalid.",
"details": [
{
"@type": "type.googleapis.com/google.ads.googleads.v26.errors.GoogleAdsFailure",
"errors": [
{
"errorCode": {
"fieldError": "REQUIRED"
},
"message": "The required field was not present.",
"location": {
"fieldPathElements": [
{ "fieldName": "operations", "index": 0 },
{ "fieldName": "create" },
{ "fieldName": "name" }
]
}
},
{
"errorCode": {
"stringLengthError": "TOO_SHORT"
},
"message": "The provided string is too short.",
"trigger": {
"stringValue": ""
},
"location": {
"fieldPathElements": [
{ "fieldName": "operations", "index": 0 },
{ "fieldName": "create" },
{ "fieldName": "description" }
]
}
}
],
"requestId": "AbCdEfGhIjKlMnOpQrStUv"
}
]
}
In diesem Beispiel wird trotz des INVALID_ARGUMENT auf oberster Ebene in den GoogleAdsFailure-Details angegeben, dass die Felder name und description das Problem verursacht haben, und warum (REQUIRED bzw. TOO_SHORT).
Fehlerdetails finden
Wie Sie auf Fehlerdetails zugreifen, hängt davon ab, ob Sie Standard-API-Aufrufe, Teilfehler oder Streaming verwenden.
Standard- und Streaming-API-Aufrufe
Wenn ein API-Aufruf ohne Verwendung eines Teilfehlers fehlschlägt, einschließlich Streamingaufrufen, wird das Objekt GoogleAdsFailure als Teil der nachfolgenden Metadaten in den gRPC-Antwortheadern zurückgegeben. Wenn Sie REST für Standardaufrufe verwenden, wird GoogleAdsFailure in der HTTP-Antwort zurückgegeben. Clientbibliotheken stellen dies in der Regel als Ausnahme mit einem GoogleAdsFailure-Attribut dar.
Teilweise fehlgeschlagen
Wenn Sie Teilfehler verwenden, werden Fehler für fehlgeschlagene Vorgänge im Feld partial_failure_error der Antwort zurückgegeben, nicht in den Antwortheadern. In diesem Fall ist die GoogleAdsFailure in ein google.rpc.Status-Objekt in der Antwort eingebettet.
Batchjobs
Bei der Batchverarbeitung können Fehler für einzelne Vorgänge nach Abschluss des Jobs durch Aufrufen von BatchJobService.ListBatchJobResults gefunden werden. Jedes Vorgangsergebnis enthält ein status-Feld mit Fehlerdetails, wenn der Vorgang fehlgeschlagen ist.
Anfrage-ID
Die request-id ist ein eindeutiger String, der Ihre API-Anfrage identifiziert und für die Fehlerbehebung unerlässlich ist.
Du findest die request-id an mehreren Stellen:
GoogleAdsFailure: Wenn ein API-Aufruf fehlschlägt undGoogleAdsFailurezurückgegeben wird, enthält er einenrequest_id.- Nachgestellte Metadaten: Sowohl für erfolgreiche als auch für fehlgeschlagene Anfragen ist
request-idin den nachgestellten Metadaten der gRPC-Antwort verfügbar. - Antwortheader: Sowohl für erfolgreiche als auch für fehlgeschlagene Anfragen ist
request-idauch in den gRPC- und HTTP-Antwortheadern verfügbar, mit Ausnahme von erfolgreichen Streaminganfragen. SearchGoogleAdsStreamResponse: Bei Streaminganfragen enthält jedeSearchGoogleAdsStreamResponse-Nachricht einrequest_id-Feld.
Geben Sie beim Protokollieren von Fehlern oder beim Kontaktieren des Supports die request-id an, um die Diagnose von Problemen zu erleichtern.
Best Practices für die Fehlerbehandlung
Implementieren Sie die folgenden Best Practices, um robuste Anwendungen zu erstellen:
Fehlerdetails prüfen: Parsen Sie immer das Feld
detailsdesStatus-Objekts und suchen Sie insbesondere nachGoogleAdsFailure. Die detailliertenerror_code,messageundlocationinGoogleAdsErrorliefern die nützlichsten Informationen für die Fehlerbehebung und das Nutzerfeedback.Zwischen Client- und Serverfehlern unterscheiden:
- Clientfehler: Codes wie
INVALID_ARGUMENT,NOT_FOUND,PERMISSION_DENIED,FAILED_PRECONDITION,UNAUTHENTICATED. Diese erfordern Änderungen an der Anfrage oder am Status/den Anmeldedaten Ihrer Anwendung. Wiederholen Sie die Anfrage nicht, ohne das Problem zu beheben. - Serverfehler: Codes wie
UNAVAILABLE,INTERNAL,DEADLINE_EXCEEDED,UNKNOWN. Diese weisen auf ein vorübergehendes Problem mit dem API-Dienst hin.
- Clientfehler: Codes wie
Wiederholungsstrategie implementieren:
- Wann wiederholen: Wiederholen Sie den Vorgang nur bei vorübergehenden Serverfehlern wie
UNAVAILABLE,DEADLINE_EXCEEDED,INTERNAL,UNKNOWNundABORTED. - Exponentieller Backoff: Verwenden Sie einen exponentiellen Backoff-Algorithmus, um die Wartezeit zwischen Wiederholungsversuchen schrittweise zu verlängern. So wird vermieden, dass ein bereits überlasteter Dienst überfordert wird. Warten Sie beispielsweise 1 Sekunde, dann 2 Sekunden, dann 4 Sekunden usw. bis zu einer maximalen Anzahl von Wiederholungsversuchen oder einer maximalen Gesamtwartezeit.
- Jitter: Fügen Sie den Backoff-Verzögerungen einen kleinen zufälligen „Jitter“ hinzu, um das „Thundering Herd“-Problem zu vermeiden, bei dem viele Clients gleichzeitig Wiederholungsversuche starten.
- Wann wiederholen: Wiederholen Sie den Vorgang nur bei vorübergehenden Serverfehlern wie
Gründlich protokollieren: Protokollieren Sie die vollständige Fehlerantwort, einschließlich aller Details, insbesondere der Anfrage-ID. Diese Informationen sind für die Fehlerbehebung und für die Meldung von Problemen an den Google-Support erforderlich.
Nutzerfeedback geben: Geben Sie den Nutzern Ihrer Anwendung anhand der spezifischen
GoogleAdsError-Codes und -Nachrichten klares und hilfreiches Feedback. Anstatt nur „Ein Fehler ist aufgetreten“ können Sie beispielsweise „Kampagnenname ist erforderlich“ oder „Die angegebene Anzeigengruppen-ID wurde nicht gefunden“ angeben.
Wenn Sie diese Richtlinien befolgen, können Sie von der Google Ads API zurückgegebene Fehler effektiv diagnostizieren und beheben. So erhalten Sie stabilere und nutzerfreundlichere Anwendungen.