Quando invii una richiesta all'API Google Ads, l'operazione potrebbe non riuscire per vari motivi. Ad esempio, potresti fornire un argomento non valido o il tuo account potrebbe aver raggiunto il limite per la creazione di nuove campagne. In questi casi, l'API restituisce un errore per farti sapere cosa è andato storto.
Questa guida spiega come leggere e gestire gli errori API per creare applicazioni più robuste.
Struttura dell'errore
Se utilizzi una delle nostre librerie client, gli errori API vengono visualizzati come eccezioni. Queste eccezioni contengono dettagli che ti aiutano a capire perché si è verificato l'errore.
L'API Google Ads restituisce le informazioni sugli errori in un formato standard. Se si verifica un errore, la risposta conterrà un oggetto GoogleAdsFailure. Questo
oggetto contiene un elenco di singoli
oggetti GoogleAdsError, ognuno dei quali descrive
un errore specifico.
Ogni oggetto GoogleAdsError fornisce:
error_code: un codice di errore specifico che indica il tipo di errore, ad esempioAuthenticationError.NOT_ADS_USER.message: una descrizione leggibile del motivo per cui si è verificato l'errore.trigger: il valore che ha causato l'errore, ad esempio "1234".location: dettagli sulla parte della richiesta che ha causato l'errore, ad esempio un nome di campo specifico.
Oltre all'elenco degli errori, GoogleAdsFailure contiene un requestId, ovvero un identificatore univoco per la richiesta API che ha generato un errore.
Errore di esempio
Ecco un esempio di errore in formato JSON. Questo errore
indica che il campo name di ad_group all'indice 0 non è presente
nella richiesta.
{
"code": 3,
"message": "Request contains an invalid argument.",
"details": [
{
"@type": "type.googleapis.com/google.ads.googleads.v22.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"
}
]
}
Per scoprire di più sugli errori delle API, consulta la nostra guida.
Esempi di librerie client
La sezione seguente mostra come gestire gli errori in varie librerie client.
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
);
foreach ($googleAdsException->getGoogleAdsFailure()->getErrors() 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 '{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};
}
}
Come acquisire i log
Per risolvere i problemi relativi agli errori, acquisisci i log degli errori restituiti dal server dell'API Google Ads e controllane i contenuti. Segui queste istruzioni per abilitare la registrazione e acquisire i log API.
Java
Per istruzioni, consulta la guida alla registrazione della libreria client Java.
C#
Puoi inizializzare la registrazione aggiungendo la seguente riga nel metodo Main
prima di effettuare chiamate API. In questo modo, la libreria genera log per tutte le chiamate API effettuate dalla tua applicazione.
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);
Per altre opzioni, consulta la guida alla registrazione della libreria.NET.
PHP
Puoi impostare la configurazione del logging nel file
google_ads_php.ini
della libreria client. Imposta logLevel su NOTICE per iniziare ad acquisire i log degli errori dettagliati.
[LOGGING]
; Optional logging settings.
logFilePath = "path/to/your/file.log"
logLevel = "NOTICE"
Per istruzioni, consulta la guida alla registrazione della libreria client PHP.
Python
Puoi impostare la configurazione del logging nel file
google-ads.yaml
della libreria client. Imposta il livello di logging su DEBUG per iniziare ad acquisire i log degli errori dettagliati.
Per altre opzioni, consulta la guida alla registrazione della libreria Python.
Ruby
Puoi impostare la configurazione del logging nel file
google_ads_config.rb
della libreria client. Imposta il livello di logging su INFO per iniziare ad acquisire i log degli errori dettagliati.
Per altre opzioni, consulta la guida alla registrazione della libreria Ruby.
Perl
Per inizializzare la registrazione, aggiungi la seguente riga allo script Perl prima di effettuare chiamate API.
Google::Ads::GoogleAds::Logging::GoogleAdsLogger::enable_all_logging();
Per altre opzioni, consulta la guida alla registrazione della libreria Perl.
curl
Per impostazione predefinita, curl stampa le risposte non riuscite in stderr.
Come gestire gli errori
Se riscontri un errore, ecco i passaggi da seguire:
- Rileva l'eccezione e acquisisci i log: inizia rilevando le eccezioni e, se vuoi, acquisisci i log API.
- Esamina l'elenco
errors: esamina ogniGoogleAdsErrornell'oggettoGoogleAdsFailure.error_codeemessageti diranno cosa non ha funzionato. - Controlla il valore
location: il campolocationpuò aiutarti a individuare in quale punto della richiesta si è verificato il problema. - Consulta la documentazione: per codici di errore specifici, consulta la pagina degli errori comuni o il riferimento completo ai codici di errore per maggiori dettagli sull'errore e su come correggerlo.
- Modifica la richiesta: in base al messaggio di errore, correggi la richiesta API. Ad esempio, se vedi
REQUIRED_FIELD_MISSING, assicurati di fornire questo campo nella tua richiesta. - Registra
request_id: se non riesci a capire come risolvere un errore e devi contattare l'assistenza, includi i log completi di richieste e risposte per la richiesta non riuscita. Assicurati di includererequest_id. Questo ID aiuta gli ingegneri di Google a individuare i dettagli della richiesta non riuscita nei log del server dell'API Google Ads e a esaminare il problema.
Passaggi successivi
- Consulta la sezione Errori comuni per un elenco dei problemi frequenti e delle relative soluzioni.
- Per tecniche di gestione degli errori più avanzate, tra cui la logica di ripetizione e l'errore parziale, consulta Informazioni sugli errori dell'API.