Lorsque vous envoyez une requête à l'API Google Ads, elle peut échouer pour différentes raisons. Par exemple, vous avez peut-être fourni un argument non valide ou votre compte a peut-être atteint la limite de création de campagnes. Dans ce cas, l'API renvoie une erreur pour vous indiquer ce qui s'est mal passé.
Ce guide explique comment lire et gérer les erreurs d'API afin de créer des applications plus robustes.
Structure des erreurs
Si vous utilisez l'une de nos bibliothèques clientes, les erreurs d'API sont signalées comme des exceptions. Ces exceptions contiennent des détails qui vous aident à comprendre pourquoi l'erreur s'est produite.
L'API Google Ads renvoie les informations d'erreur dans un format standard. En cas d'erreur, la réponse contiendra un objet GoogleAdsFailure. Cet objet contient une liste d'objets GoogleAdsError individuels, chacun détaillant une erreur spécifique.
Chaque objet GoogleAdsError fournit les éléments suivants :
error_code: code d'erreur spécifique qui vous indique le type d'erreur, par exempleAuthenticationError.NOT_ADS_USER.message: description lisible par l'humain de la raison pour laquelle l'erreur s'est produite.trigger: valeur à l'origine de l'erreur, par exemple "1234".location: détails sur la partie de la requête à l'origine de l'erreur, par exemple un nom de champ spécifique.
En plus de la liste des erreurs, GoogleAdsFailure contient un requestId, qui est un identifiant unique pour la requête API ayant entraîné une erreur.
Exemple d'erreur
Voici un exemple d'erreur au format JSON. Cette erreur indique que le champ name de l'élément ad_group à l'index 0 est manquant dans la requête.
{
"code": 3,
"message": "Request contains an invalid argument.",
"details": [
{
"@type": "type.googleapis.com/google.ads.googleads.v26.errors.GoogleAdsFailure",
"errors": [
{
"errorCode": {
"requestError": "REQUIRED_FIELD_MISSING"
},
"message": "Required field is missing",
"location": {
"fieldPathElements": [
{
"fieldName": "ad_group",
"index": 0
},
{
"fieldName": "name"
}
]
}
}
],
"requestId": "unique_request_id_12345"
}
]
}
Pour en savoir plus sur les erreurs d'API, consultez Comprendre les erreurs d'API.
Exemples de bibliothèques clientes
La section suivante explique comment gérer les erreurs dans différentes bibliothèques clientes.
Java
try {
// Make an API call.
...
} catch (GoogleAdsException gae) {
// GoogleAdsException is the base class for most exceptions thrown by an
// API request. Instances of this exception have a message and a
// GoogleAdsFailure that contains a collection of GoogleAdsErrors that
// indicate the underlying causes of the GoogleAdsException.
System.err.printf(
"Request ID %s failed due to GoogleAdsException. Underlying"
+ " errors:%n",
gae.getRequestId());
int i = 0;
for (GoogleAdsError googleAdsError :
gae.getGoogleAdsFailure().getErrorsList()) {
System.err.printf(" Error %d: %s%n", i++, googleAdsError);
}
}
C#
try
{
// Make an API call.
...
}
catch (GoogleAdsException e)
{
Console.WriteLine($"Request with ID '{e.RequestId}' has failed.");
Console.WriteLine("Google Ads failure details:");
foreach (GoogleAdsError error in e.Failure.Errors)
{
Console.WriteLine($"{error.ErrorCode}: {error.Message}");
}
}
PHP
try {
// Make an API call.
...
} catch (GoogleAdsException $googleAdsException) {
printf(
"Request with ID '%s' has failed.%sGoogle Ads failure details:%s",
$googleAdsException->getRequestId(),
PHP_EOL,
PHP_EOL
);
$errors = $googleAdsException->getGoogleAdsFailure()->getErrors();
foreach ($errors as $error) {
/** @var GoogleAdsError $error */
printf(
"\t%s: %s%s",
$error->getErrorCode()->getErrorCode(),
$error->getMessage(),
PHP_EOL
);
}
}
Python
try:
# Make an API call.
...
except GoogleAdsException as ex:
print(
f"Request with ID '{ex.request_id}' failed with status "
f"'{ex.error.code().name}' and includes the following errors:"
)
for error in ex.failure.errors:
print(
f"\tError with message '{error.message}' and code "
f"'{error.error_code}'."
)
Ruby
begin
# Make an API call.
...
rescue Google::Ads::GoogleAds::Errors::GoogleAdsError => e
puts "API call failed with request ID: #{e.request_id}"
e.failure.errors.each do |error|
puts "\t#{error.error_code}: #{error.message}"
end
end
Perl
# Try sending a mutate request to add the ad group ad.
...
if ($response->isa("Google::Ads::GoogleAds::GoogleAdsException")) {
printf "Google Ads failure details:\n";
foreach my $error (@{$response->get_google_ads_failure()->{errors}}) {
printf "\t%s: %s\n",
[keys %{$error->{errorCode}}]->[0], $error->{message};
}
}
Enregistrer les journaux
Pour résoudre les erreurs, capturez les journaux d'erreurs renvoyés par le serveur de l'API Google Ads et examinez leur contenu. Suivez les instructions ci-dessous pour activer la journalisation et capturer les journaux d'API.
Java
Pour obtenir des instructions, consultez le guide de journalisation de la bibliothèque cliente Java.
C#
Vous pouvez initialiser la journalisation en ajoutant la ligne suivante dans votre méthode Main avant d'effectuer des appels d'API. Cela garantit que la bibliothèque génère des journaux pour tous les appels d'API effectués par votre application.
using Google.Ads.GoogleAds.Util;
...
// Detailed logs.
TraceUtilities.Configure(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE,
"/path/to/your/logs/details.log", System.Diagnostics.SourceLevels.All);
// Summary logs.
TraceUtilities.Configure(TraceUtilities.SUMMARY_REQUEST_LOGS_SOURCE,
"/path/to/your/logs/summary.log", System.Diagnostics.SourceLevels.All);
Pour en savoir plus sur les autres options, consultez le guide de journalisation de la bibliothèque .NET.
PHP
Vous pouvez définir la configuration de la journalisation dans le fichier google_ads_php.ini de votre bibliothèque cliente. Définissez logLevel sur NOTICE pour commencer à capturer les journaux d'erreurs détaillés.
[LOGGING]
; Optional logging settings.
logFilePath = "path/to/your/file.log"
logLevel = "NOTICE"
Pour obtenir des instructions, consultez le guide sur la journalisation de la bibliothèque cliente PHP.
Python
Vous pouvez définir la configuration de la journalisation dans le fichier google-ads.yaml de votre bibliothèque cliente. Définissez le niveau de journalisation sur DEBUG pour commencer à capturer les journaux d'erreurs détaillés.
Pour connaître les autres options, consultez le guide de journalisation de la bibliothèque Python.
Ruby
Vous pouvez définir la configuration de la journalisation dans le fichier google_ads_config.rb de votre bibliothèque cliente. Définissez le niveau de journalisation sur INFO pour commencer à capturer les journaux d'erreurs détaillés.
Pour connaître les autres options, consultez le guide de journalisation de la bibliothèque Ruby.
Perl
Pour initialiser la journalisation, ajoutez la ligne suivante dans votre script Perl avant d'effectuer des appels d'API.
Google::Ads::GoogleAds::Logging::GoogleAdsLogger::enable_all_logging();
Pour connaître les autres options, consultez le guide de journalisation de la bibliothèque Perl.
curl
Par défaut, curl affiche les réponses ayant échoué dans stderr.
Gérer les erreurs
Si vous rencontrez une erreur, procédez comme suit :
- Interceptez l'exception et capturez les journaux : commencez par intercepter les exceptions et, si vous le souhaitez, capturez les journaux de l'API.
- Examinez la liste
errors: examinez chaqueGoogleAdsErrordans l'objetGoogleAdsFailure.error_codeetmessagevous indiqueront ce qui n'a pas fonctionné. - Vérifiez la valeur
location: le champlocationpeut vous aider à identifier l'endroit où le problème s'est produit dans votre requête. - Consultez la documentation : pour des codes d'erreur spécifiques, consultez la page des erreurs courantes ou la documentation de référence complète sur les codes d'erreur pour en savoir plus sur l'erreur et comment la corriger.
- Ajustez votre requête : corrigez votre requête API en fonction du message d'erreur. Par exemple, si vous voyez
REQUIRED_FIELD_MISSING, assurez-vous de fournir ce champ dans votre requête. - Consignez le
request_id: si vous ne parvenez pas à résoudre une erreur et que vous devez contacter l'assistance, incluez les journaux complets des requêtes et des réponses pour la requête ayant échoué. Veillez à inclurerequest_id. Cet ID aide les ingénieurs Google à localiser les détails de la requête ayant échoué dans les journaux du serveur de l'API Google Ads et à examiner votre problème.
Étapes suivantes
- Consultez la section Erreurs courantes pour obtenir la liste des problèmes fréquents et leurs solutions.
- Pour en savoir plus sur les techniques avancées de gestion des erreurs, y compris la logique de nouvelle tentative et l'échec partiel, consultez Comprendre les erreurs d'API.