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 problemlos bewältigen können.
Die Google Ads API folgt dem Standardfehlermodell von Google APIs, 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
Die Google Ads API verwendet eine Reihe kanonischer Fehlercodes, 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. Gibt an, dass der Vorgang erfolgreich war. | – |
| 1 | 499 | CANCELLED |
Der Vorgang wurde abgebrochen, in der Regel vom Client. | Das bedeutet in der Regel, dass der Client nicht mehr gewartet hat. Prüfen Sie die clientseitigen Zeitüberschreitungen. |
| 2 | 500 | UNKNOWN |
Ein unbekannter Fehler ist aufgetreten. Weitere Details finden Sie möglicherweise in der Fehlermeldung oder in den Fehlerdetails. | Behandeln Sie den Fehler als Serverfehler. Oft kann der Vorgang mit Backoff wiederholt werden. |
| 3 | 400 | INVALID_ARGUMENT |
Der Client hat ein ungültiges Argument angegeben. Dies weist auf ein Problem hin, das verhindert, dass die API die Anfrage verarbeitet, z. B. ein fehlerhafter Ressourcenname oder ein ungültiger Wert. | Clientfehler: Prüfen Sie die Anfrageparameter und achten Sie darauf, dass sie die API-Anforderungen erfüllen. Die Fehlerdetails enthalten in der Regel Informationen dazu, welches Argument ungültig war und warum. Verwenden Sie diese Details, um die Anfrage zu korrigieren. Wiederholen Sie den Vorgang erst, wenn die Anfrage korrigiert wurde. |
| 4 | 504 | DEADLINE_EXCEEDED |
Die Frist ist abgelaufen, bevor der Vorgang abgeschlossen werden konnte. | Serverfehler: Oft vorübergehend. Erwägen Sie, den Vorgang mit exponentiellem Backoff zu wiederholen. |
| 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 welche ID sie haben. Wiederholen Sie den Vorgang erst, wenn Sie die Fehler behoben haben. |
| 6 | 409 | ALREADY_EXISTS |
Die Entität, die der Client erstellen wollte, existiert bereits. | Clientfehler: Vermeiden Sie das Erstellen doppelter Ressourcen. Prüfen Sie, ob die Ressource 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, Autorisierung und Nutzerrollen für das Google Ads-Konto. Wiederholen Sie den Vorgang erst, wenn Sie die Berechtigungen korrigiert haben. |
| 8 | 429 | RESOURCE_EXHAUSTED |
Entweder ist eine Ressource aufgebraucht (z. B. haben Sie Ihr Kontingent überschritten) oder ein System ist überlastet. | Client-/Serverfehler: In der Regel müssen Sie warten. Implementieren Sie exponentiellen Backoff und reduzieren Sie möglicherweise die Anfragerate. Weitere Informationen finden Sie unter 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. Beispielsweise fehlt ein Pflichtfeld. | Clientfehler: Die Anfrage ist gültig, aber der Zustand ist falsch. Prüfen Sie die Fehlerdetails, um die Ursache für den Fehler bei der Vorbedingung zu ermitteln. Wiederholen Sie den Vorgang erst, wenn Sie den Zustand korrigiert haben. |
| 10 | 409 | ABORTED |
Der Vorgang wurde abgebrochen, in der Regel aufgrund eines Parallelitätsproblems wie eines Transaktionskonflikts. | Serverfehler: Oft kann der Vorgang mit einem kurzen Backoff wiederholt werden. |
| 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 wurde nicht implementiert oder wird von der API nicht unterstützt. | Clientfehler: Prüfen Sie die API-Version und die verfügbaren Funktionen. Wiederholen Sie den Vorgang nicht. |
| 13 | 500 | INTERNAL |
Ein interner Fehler ist aufgetreten. Dies ist ein allgemeiner Fehlercode für serverseitige Probleme. | Serverfehler: In der Regel kann der Vorgang mit exponentiellem Backoff wiederholt werden. Wenn der Fehler weiterhin auftritt, melden Sie das Problem. |
| 14 | 503 | UNAVAILABLE |
Der Dienst ist derzeit nicht verfügbar. Dies ist höchstwahrscheinlich ein vorübergehender Zustand. | Serverfehler: Es wird dringend empfohlen, den Vorgang mit exponentiellem Backoff zu wiederholen. |
| 15 | 500 | DATA_LOSS |
Dauerhafter Datenverlust oder Datenkorruption. | Serverfehler: Selten. Weist auf ein schwerwiegendes Problem hin. Wiederholen Sie den Vorgang nicht. Wenn der Fehler weiterhin auftritt, melden Sie das Problem. |
| 16 | 401 | UNAUTHENTICATED |
Die Anfrage enthält keine gültigen Anmeldedaten. | Clientfehler: Prüfen Sie Ihre Authentifizierungstokens und ‑Anmeldedaten. Wiederholen Sie den Vorgang erst, wenn Sie die Authentifizierung korrigiert haben. |
Weitere Informationen zu diesen Codes finden Sie im Leitfaden zum API-Design unter Fehler codes.
Fehlerdetails verstehen
Neben dem Code auf oberster Ebene bietet die Google Ads API spezifischere Fehlerinformationen im Feld details des Status-Objekts. Dieses Feld enthält oft
enthält 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 Fehler beschreiben.request_id: Eine eindeutige ID für die Anfrage, die für das Debugging und den Support nützlich ist.
Jedes GoogleAdsError-Objekt enthält:
errorCode: Ein detaillierterer, Google Ads API-spezifischer Fehlercode, z. B.AuthenticationError.NOT_ADS_USER.message: Eine für Menschen lesbare Beschreibung des spezifischen Fehlers.trigger: Der Wert, der den Fehler verursacht hat, falls zutreffend.location: Beschreibt, wo in der Anfrage der Fehler aufgetreten ist, einschließlich Feldpfaden.details: Zusätzliche Fehlerdetails, z. B. nicht veröffentlichte Fehlerursachen.
Beispiel für Fehlerdetails
Wenn Sie einen Fehler erhalten, können Sie mit Ihrer Clientbibliothek auf diese Details zugreifen. Ein INVALID_ARGUMENT-Fehler (Code 3) kann beispielsweise GoogleAdsFailure-Details wie die folgenden haben:
{
"code": 3,
"message": "The request was invalid.",
"details": [
{
"@type": "type.googleapis.com/google.ads.googleads.v24.errors.GoogleAdsFailure",
"errors": [
{
"errorCode": {
"fieldError": "REQUIRED"
},
"message": "The required field was not present.",
"location": {
"fieldPathElements": [
{ "fieldName": "operations" },
{ "fieldName": "create" },
{ "fieldName": "name" }
]
}
},
{
"errorCode": {
"stringLengthError": "TOO_SHORT"
},
"message": "The provided string is too short.",
"trigger": {
"stringValue": ""
},
"location": {
"fieldPathElements": [
{ "fieldName": "operations" },
{ "fieldName": "create" },
{ "fieldName": "description" }
]
}
}
]
}
]
}
In diesem Beispiel wird trotz des Fehlers auf oberster Ebene INVALID_ARGUMENT 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, teilweise Fehler oder Streaming verwenden.
Standard- und Streaming-API-Aufrufe
Wenn ein API-Aufruf ohne Verwendung von teilweisen Fehlern fehlschlägt, einschließlich Streaming
Aufrufen, wird das
GoogleAdsFailure-Objekt als
Teil der nachfolgenden Metadaten in den gRPC-Antwortheadern zurückgegeben. Wenn Sie
REST für Standardaufrufe verwenden, GoogleAdsFailure wird
in der HTTP-Antwort zurückgegeben. Clientbibliotheken stellen dies in der Regel als Ausnahme mit einem
GoogleAdsFailure-Attribut dar.
Teilweise Fehler
Wenn Sie teilweise
Fehler verwenden, werden Fehler für fehlgeschlagene
Vorgänge im Feld partial_failure_error der Antwort und
nicht in den Antwortheadern zurückgegeben. In diesem Fall ist das
GoogleAdsFailure in ein
google.rpc.Status Objekt in der Antwort eingebettet.
Batch jobs
Bei der Batchverarbeitung können Fehler für
einzelne Vorgänge abgerufen werden, indem Sie die Batchjob-Ergebnisse nach
Abschluss des Jobs abrufen. 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.
Sie finden die request-id an mehreren Stellen:
GoogleAdsFailure: Wenn ein API-Aufruf fehlschlägt undGoogleAdsFailurezurückgegeben wird, enthält er einerequest_id.- Nachfolgende Metadaten: Sowohl bei erfolgreichen als auch bei fehlgeschlagenen Anfragen ist
request-idin den nachfolgenden Metadaten der gRPC-Antwort verfügbar. - Antwortheader: Sowohl bei erfolgreichen als auch bei fehlgeschlagenen Anfragen ist
request-idauch in den gRPC- und HTTP-Antwortheadern verfügbar, mit Ausnahme von erfolgreichen Streaming-Anfragen. SearchGoogleAdsStreamResponse: Bei Streaming-Anfragen enthält jedeSearchGoogleAdsStreamResponseNachricht einrequest_id-Feld.
Wenn Sie Fehler protokollieren oder sich an den Support wenden, geben Sie 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 entwickeln:
Fehlerdetails prüfen: Analysieren Sie immer das
detailsFeld desStatusObjekts und suchen Sie insbesondere nachGoogleAdsFailure. Die detaillierten InformationenerrorCode,message, undlocationinGoogleAdsErrorbieten die nützlichsten Informationen für das Debugging und das Nutzerfeedback.Unterscheiden Sie zwischen Client- und Serverfehlern:
- 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 erst, wenn Sie das Problem behoben haben. - Serverfehler: Codes wie
UNAVAILABLE,INTERNAL,DEADLINE_EXCEEDED,UNKNOWN. Diese weisen auf ein vorübergehendes Problem mit dem API-Dienst hin.
- Clientfehler: Codes wie
Implementieren Sie eine Wiederholungsstrategie:
- 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 zwischen den Wiederholungsversuchen immer länger zu warten. So vermeiden Sie, 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 Wartezeit.
- Jitter: Fügen Sie den Backoff-Verzögerungen eine kleine zufällige Menge „Jitter“ hinzu, um das Problem der „Thundering Herd“ zu vermeiden, bei dem viele Clients gleichzeitig Wiederholungsversuche durchführen.
- Wann wiederholen: Wiederholen Sie den Vorgang nur bei vorübergehenden Serverfehlern wie
Protokollieren Sie gründlich: Protokollieren Sie die vollständige Fehlerantwort, einschließlich aller Details, insbesondere der Anfrage-ID. Diese Informationen sind für das Debugging 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 ‑Meldungen 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 benutzerfreundlichere Anwendungen.