API-Fehler verstehen

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 von GoogleAdsError-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:

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 und GoogleAdsFailure zurückgegeben wird, enthält er eine request_id.
  • Nachfolgende Metadaten: Sowohl bei erfolgreichen als auch bei fehlgeschlagenen Anfragen ist request-id in den nachfolgenden Metadaten der gRPC-Antwort verfügbar.
  • Antwortheader: Sowohl bei erfolgreichen als auch bei fehlgeschlagenen Anfragen ist request-id auch in den gRPC- und HTTP-Antwortheadern verfügbar, mit Ausnahme von erfolgreichen Streaming-Anfragen.
  • SearchGoogleAdsStreamResponse: Bei Streaming-Anfragen enthält jede SearchGoogleAdsStreamResponse Nachricht ein request_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:

  1. Fehlerdetails prüfen: Analysieren Sie immer das details Feld des Status Objekts und suchen Sie insbesondere nach GoogleAdsFailure. Die detaillierten Informationen errorCode, message, und location in GoogleAdsError bieten die nützlichsten Informationen für das Debugging und das Nutzerfeedback.

  2. 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.
  3. Implementieren Sie eine Wiederholungsstrategie:

    • Wann wiederholen: Wiederholen Sie den Vorgang nur bei vorübergehenden Serverfehlern wie UNAVAILABLE, DEADLINE_EXCEEDED, INTERNAL, UNKNOWN und ABORTED.
    • 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.
  4. 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.

  5. 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.