Ao enviar 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 da API para que você possa criar aplicativos mais robustos.
Estrutura de erros
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 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
GoogleAdsFailure objeto. 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,
GoogleAdsFailure contém um requestId, que é um identificador exclusivo da
solicitação de API que resultou em um erro.
Exemplo de erro
Confira um exemplo de erro no formato JSON. Esse erro indica que o campo name do ad_group no índice 0 está ausente da solicitação.
{
"code": 3,
"message": "Request contains an invalid argument.",
"details": [
{
"@type": "type.googleapis.com/google.ads.googleads.v24.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 da 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 solucionar problemas, capture os registros de erros retornados pelo servidor da API Google Ads e inspecione o conteúdo deles. Use as instruções a seguir para ativar o registro e capturar registros da API.
Java
Consulte o guia de registro da biblioteca de cliente Java para instruções.
C#
É possível inicializar o registro adicionando a linha a seguir no método Main antes de fazer qualquer chamada de API. Isso garante que toda 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 .NET library logging guide para outras opções.
PHP
É possível definir a configuração de registro 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 PHP para instruções.
Python
É possível definir a configuração de registro no arquivo
google-ads.yaml
da biblioteca de cliente. Defina o nível de registro como DEBUG para começar a capturar os registros de erros detalhados.
Consulte o guia de registro da biblioteca Python para outras opções.
Ruby
É possível definir a configuração de registro no arquivo
google_ads_config.rb
da biblioteca de cliente. Defina o nível de registro como INFO para começar a capturar os registros de erros detalhados.
Consulte o guia de registro da biblioteca Ruby para outras opções.
Perl
Para inicializar o registro, adicione a linha a seguir no script Perl antes de fazer qualquer chamada de API.
Google::Ads::GoogleAds::Logging::GoogleAdsLogger::enable_all_logging();
Consulte o guia de registro da biblioteca Perl para outras opções.
curl
O curl imprime as respostas com falha em stderr por padrão.
Como processar erros
Se você encontrar um erro, siga estas etapas:
- Detecte a exceção e capture os registros: comece detectando as exceções e, opcionalmente, capturando os registros da API.
- Examine a lista
errors: analise cadaGoogleAdsErrorno objetoGoogleAdsFailure. Oerror_codee omessagevão informar o que deu errado. - Verifique o valor de
location: o campolocationpode ajudar a identificar onde o problema ocorreu na solicitação. - Consulte a documentação: para códigos de erro específicos, consulte a página de erros comuns ou a referência completa do código de erro para mais detalhes sobre o erro e como corrigi-lo.
- Ajuste a solicitação: com base na mensagem de erro, corrija a solicitação da API. Por exemplo, se você vir
REQUIRED_FIELD_MISSING, inclua esse campo na solicitação. - Registre o
request_id: se você não conseguir descobrir como 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 o 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 nova tentativa e falha parcial, consulte Entender erros da API Errors.