Este guia contém exemplos de como chamar os endpoints REST diretamente, sem a uso de uma biblioteca de cliente.
Pré-requisitos
Todas as amostras abaixo devem ser copiadas e coladas em um bash shell com o comando curl.
Você também precisa de um token de desenvolvedor, recursos de teste de acesso à conta está bom, e uma Conta de administrador do Google Ads com pelo menos uma conta de cliente.
Variáveis de ambiente
Insira os IDs e as credenciais da conta abaixo e depois copie e cole na sua terminal para configurar as variáveis de ambiente usadas nos exemplos a seguir. O guia de Autorização fornece instruções para gerar uma Token de acesso do OAuth 2.0.
API_VERSION="17"
DEVELOPER_TOKEN="DEVELOPER_TOKEN"
OAUTH2_ACCESS_TOKEN="OAUTH_ACCESS_TOKEN"
MANAGER_CUSTOMER_ID="MANAGER_CUSTOMER_ID"
CUSTOMER_ID="CUSTOMER_ID"
Outros IDs de objetos opcionais
Alguns dos exemplos a seguir funcionam em orçamentos ou campanhas preexistentes. Se você tiver IDs de objetos existentes para usar com esses exemplos, insira-os abaixo.
BUDGET_ID=BUDGET_ID
CAMPAIGN_ID=CAMPAIGN_ID
Caso contrário, os dois Mutates - Creates examples vão criar um novo orçamento. e campanha.
Pesquisar
O guia Manual de consulta contém muitos relatórios que correspondem a algumas das telas padrão do Google Ads e funcionam com as mesmas variáveis de ambiente usadas neste guia. Nossa consulta interativa Ferramenta de criação é também é um ótimo recurso para criar consultas personalizadas de maneira interativa.
Paginado
O método search
usa paginação, com um tamanho de página fixo de 10 mil itens e
um page_token
especificado ao lado de query
.
cURL
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:search" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data '{ "query": " SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED' ", "page_token":"${PAGE_TOKEN}" }'
GAQL
SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED'
Streaming
O método searchStream
transmite todos os resultados em uma única resposta, assim, o
O campo pageSize
não é compatível.
cURL
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:searchStream" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data '{ "query": " SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED' " }'
GAQL
SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED'
Mudanças
Várias operações mutate (create
, update
ou remove
) podem ser enviadas em uma
um único corpo de solicitação JSON preenchendo a matriz operations
.
Gera
Este exemplo cria dois orçamentos de campanha compartilhados em uma única solicitação.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaignBudgets:mutate" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'name': 'My Campaign Budget #${RANDOM}', 'amountMicros': 500000, } }, { 'create': { 'name': 'My Campaign Budget #${RANDOM}', 'amountMicros': 500000, } } ] }"
O próximo exemplo usa o BUDGET_ID
de um orçamento de campanha atual. é possível
copie e cole o resultado da etapa anterior.
BUDGET_ID=BUDGET_ID
Os recursos que se referem a outros recursos fazem isso
nome do recurso. A campanha criada abaixo
refere-se a um campaignBudget
pelo nome de recurso com valor de string.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'status': 'PAUSED', 'advertisingChannelType': 'SEARCH', 'geoTargetTypeSetting': { 'positiveGeoTargetType': 'PRESENCE_OR_INTEREST', 'negativeGeoTargetType': 'PRESENCE_OR_INTEREST' }, 'name': 'My Search campaign #${RANDOM}', 'campaignBudget': 'customers/${CUSTOMER_ID}/campaignBudgets/${BUDGET_ID}', 'targetSpend': {} } } ] }"
Atualizações
Atualize atributos de objetos existentes usando operações update
. O próximo
usa uma campanha existente; copie e cole dos arquivos
saída de uma etapa.
CAMPAIGN_ID=CAMPAIGN_ID
Todas as atualizações exigem um campo updateMask
, uma lista separada por vírgulas de
quais atributos JSON devem estar na solicitação, que devem ser aplicados como uma
atualizar. Atributos listados no updateMask
, mas não presentes na solicitação
são apagados em um objeto. Atributos não listados em updateMask
, mas presentes
no corpo da solicitação, são ignorados.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'update': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}', 'name': 'A changed campaign name #${RANDOM}', }, 'updateMask': 'name' } ], }"
Remover
Para remover objetos, especifique o nome do recurso como uma operação remove
.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'remove': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}' } ], }"
Falhas parciais
Quando várias operações estão em uma única solicitação, é possível especificar
partialFailure
: Se true
, as operações bem-sucedidas serão realizadas e
operações inválidas retornam erros. Se false
, todas as operações na solicitação
terão sucesso se e somente se forem todos válidos.
O próximo exemplo usa uma campanha existente. copie e cole Exemplo de Cria a saída.
CAMPAIGN_ID=CAMPAIGN_ID
A solicitação a seguir contém duas operações. A primeira tenta alterar
estratégia de lances da campanha fornecida, e a próxima tenta remover uma
com um ID inválido. Como a segunda operação resulta em erro (o
ID da campanha é inválido) e, como partialFailure
está definido como false
, o
primeira operação também falhará, e a estratégia de lances da campanha existente será
atualizado.
curl --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'partialFailure': false, 'operations': [ { 'update': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}', 'manualCpc': { 'enhancedCpcEnabled': false } }, 'updateMask': 'manual_cpc.enhanced_cpc_enabled' }, { 'remove': 'customers/${CUSTOMER_ID}/campaigns/INVALID_CAMPAIGN_ID' } ] }"
Operações agrupadas
O método googleAds:mutate
oferece suporte ao envio de grupos de operações com
vários tipos de recursos. É possível enviar muitas operações de diferentes tipos para
encadear uma sequência de operações que devem ser realizadas em grupo.
O conjunto de operações será bem-sucedido se nenhuma operação falhar ou todas falharem, se alguma
falha em uma única operação.
Este exemplo demonstra a criação de um orçamento de campanha, uma campanha, um grupo de anúncios e anúncio juntos como um único conjunto de ações. Cada operação sucessiva depende com a anterior. Se uma delas falhar, o grupo de operações vai falhar.
Números inteiros negativos (-1
, -2
, -3
) são usados como marcadores de posição no recurso.
e são preenchidos dinamicamente no tempo de execução com os resultados da sequência
das operações.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:mutate" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'mutateOperations': [ { 'campaignBudgetOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/campaignBudgets/-1', 'name': 'My Campaign Budget #${RANDOM}', 'deliveryMethod': 'STANDARD', 'amountMicros': 500000, 'explicitlyShared': false } } }, { 'campaignOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/-2', 'status': 'PAUSED', 'advertisingChannelType': 'SEARCH', 'geoTargetTypeSetting': { 'positiveGeoTargetType': 'PRESENCE_OR_INTEREST', 'negativeGeoTargetType': 'PRESENCE_OR_INTEREST' }, 'name': 'My Search campaign #${RANDOM}', 'campaignBudget': 'customers/${CUSTOMER_ID}/campaignBudgets/-1', 'targetSpend': {} } } }, { 'adGroupOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/adGroups/-3', 'campaign': 'customers/${CUSTOMER_ID}/campaigns/-2', 'name': 'My ad group #${RANDOM}', 'status': 'PAUSED', 'type': 'SEARCH_STANDARD' } } }, { 'adGroupAdOperation': { 'create': { 'adGroup': 'customers/${CUSTOMER_ID}/adGroups/-3', 'status': 'PAUSED', 'ad': { 'responsiveSearchAd': { 'headlines': [ { 'pinned_field': 'HEADLINE_1', 'text': 'An example headline' }, { 'text': 'Another example headline' }, { 'text': 'Yet another headline' } ], 'descriptions': [ { 'text': 'An example description' }, { 'text': 'Another example description' } ], 'path1': 'all-inclusive', 'path2': 'deals' }, 'finalUrls': ['https://www.example.com'] } } } } ] }"
Gerenciamento da conta
Criação de contas
Crie novas contas usando o método createCustomerClient
. O URL
Requer um ID de conta de administrador em vez de um ID de conta de cliente. Um novo cliente
é criada na conta de administrador.
curl f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${MANAGER_CUSTOMER_ID}:createCustomerClient" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'customerClient': { 'descriptiveName': 'My Client #${RANDOM}', 'currencyCode': 'USD', 'timeZone': 'America/New_York' } }"
Como listar contas acessíveis
Usar uma solicitação GET
simples para o método listAccessibleCustomers
para acessar uma lista
de contas do Google Ads acessíveis com o token de acesso OAuth 2.0 fornecido. Nenhum administrador
ou IDs de conta de cliente devem ser usados nessa solicitação.
curl -f --request GET "https://googleads.googleapis.com/v${API_VERSION}/customers:listAccessibleCustomers" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \
Upload de recursos binários
O método assets:mutate
é usado para fazer upload e gerenciar
Recursos. Os dados binários, como uma imagem, são codificados como
uma string usando a codificação base64 padrão com padding. Padrão ou
A codificação base64 segura para URL com ou sem padding é aceita.
Este exemplo codifica um GIF de 1 pixel para manter a amostra concisa. Na prática,
Os payloads data
são muito maiores.
Use o utilitário de linha de comando base64
, que faz parte do
Utilitários principais do GNU)
para codificar uma imagem GIF de 1 pixel.
base64 1pixel.gif
O valor codificado em base64 é especificado como o atributo data
em uma solicitação de API.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/assets:mutate" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'name': 'My image asset #${RANDOM}', 'type': 'IMAGE', 'imageAsset': { 'data': 'R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAIA' } } } ] }"