Quando você envia uma solicitação para a API Google Ads, ela pode falhar por vários motivos. Por exemplo, você pode fornecer um argumento inválido ou sua conta pode ter atingido o limite de criação de novas campanhas. Nesses casos, a API retorna um erro para informar o que deu errado.
Este guia explica como ler e processar erros de API para que você possa criar aplicativos mais robustos.
Estrutura de erro
Se você estiver usando uma das nossas bibliotecas de cliente, os erros da API serão exibidos como exceções. Essas exceções contêm detalhes que ajudam você a entender por que o erro ocorreu.
A API Google Ads retorna informações de erro em um formato padrão. Se ocorrer um
erro, a resposta vai conter um
objeto GoogleAdsFailure. Esse objeto contém uma lista de objetos GoogleAdsError individuais, cada um detalhando um erro específico.
Cada objeto GoogleAdsError fornece:
error_code: um código de erro específico que informa o tipo de erro, comoAuthenticationError.NOT_ADS_USER.message: uma descrição legível do motivo do erro.trigger: o valor que causou o erro, como "1234".location: detalhes sobre qual parte da solicitação causou o erro, como um nome de campo específico.
Além da lista de erros, o GoogleAdsFailure contém um requestId, que é um identificador exclusivo da solicitação de API que resultou em um erro.
Exemplo de erro
Veja um exemplo de como um erro aparece no formato JSON. Esse erro indica que o campo name do ad_group no índice 0 está faltando na solicitação.
{
"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"
}
]
}
Consulte nosso guia para saber mais sobre erros de API.
Exemplos de bibliotecas de cliente
A seção a seguir mostra como processar erros em várias bibliotecas de cliente.
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};
}
}
Como capturar registros
Para resolver erros, capture os registros de erros retornados pelo servidor da API Google Ads e inspecione o conteúdo deles. Siga as instruções abaixo para ativar o registro em log e capturar registros da API.
Java
Consulte o guia de geração de registros da biblioteca de cliente Java para instruções.
C#
Para inicializar o registro, adicione a seguinte linha ao método Main
antes de fazer qualquer chamada de API. Isso garante que a biblioteca
gere registros para todas as chamadas de API feitas pelo aplicativo.
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);
Consulte o guia de geração de registros da biblioteca.NET para mais opções.
PHP
É possível definir a configuração de geração de registros no arquivo
google_ads_php.ini
da biblioteca de cliente. Defina o logLevel como NOTICE para começar a capturar os registros de erros detalhados.
[LOGGING]
; Optional logging settings.
logFilePath = "path/to/your/file.log"
logLevel = "NOTICE"
Consulte o guia de registro da biblioteca de cliente do PHP para instruções.
Python
É possível definir a configuração de geração de registros no arquivo
google-ads.yaml
da biblioteca de cliente. Defina o nível de geração de registros como DEBUG para começar a capturar os registros de erros detalhados.
Consulte o guia de geração de registros da biblioteca Python para outras opções.
Ruby
É possível definir a configuração de geração de registros no arquivo
google_ads_config.rb
da biblioteca de cliente. Defina o nível de geração de registros como INFO para começar a capturar os registros de erros detalhados.
Consulte o guia de geração de registros da biblioteca Ruby para mais opções.
Perl
Para inicializar o registro, adicione a seguinte linha ao script Perl antes de fazer qualquer chamada de API.
Google::Ads::GoogleAds::Logging::GoogleAdsLogger::enable_all_logging();
Consulte o guia de geração de registros da biblioteca Perl para mais opções.
curl
Por padrão, o curl imprime as respostas com falha em stderr.
Como processar erros
Se você encontrar um erro, siga estas etapas:
- Capturar a exceção e os registros: comece capturando as exceções e, opcionalmente, os registros da API.
- Examine a lista
errors: analise cadaGoogleAdsErrorno objetoGoogleAdsFailure. Oserror_codeemessagevão informar o que deu errado. - Verifique o valor de
location: o campolocationpode ajudar você a identificar onde o problema ocorreu na sua solicitação. - Consulte a documentação: para códigos de erro específicos, confira a página de erros comuns ou a referência completa de códigos de erro para mais detalhes sobre o erro e como corrigi-lo.
- Ajuste sua solicitação: com base na mensagem de erro, corrija sua solicitação de API. Por exemplo, se você vir
REQUIRED_FIELD_MISSING, forneça esse campo na sua solicitação. - Registre o
request_id: se você não conseguir resolver um erro e precisar entrar em contato com o suporte, inclua os registros completos de solicitação e resposta da solicitação com falha. Inclua orequest_id. Esse ID ajuda os engenheiros do Google a localizar os detalhes da solicitação com falha nos registros do servidor da API Google Ads e investigar seu problema.
Próximas etapas
- Consulte Erros comuns para conferir uma lista de problemas frequentes e as soluções deles.
- Para técnicas mais avançadas de tratamento de erros, incluindo lógica de repetição e falha parcial, consulte Entender erros da API.