Visibilidade da consulta e métricas de tráfego inválido

Informações gerais

As instruções abaixo mostram exemplos de como consultar tráfego de visibilidade válido e tráfego inválido usando a API. Essas métricas trabalham apenas com o inventário comprado pelo Google Ads, Display & Video 360 e YouTube Reserve.

As métricas de visualização do TrueView certificadas pelo Media Rating Council (MRC) requerem o uso da API ADH porque não há consulta com modelo associada. Além disso, as métricas de visualização do TrueView e de visibilidade não podem ser confundidas.

Selecione o ponto de compra do qual você quer consultar métricas de visibilidade:

Consultar métricas de visibilidade usando a UI

A consulta de visibilidade com modelo fornece métricas certificadas pelo MRC.

A certificação do MRC é binária, ou seja, os resultados podem ser certificados ou não, e ela vale para toda sua tabela de resultados. No BigQuery, o marcador adh-mrc-accredited é aplicado a todos os resultados certificados pelo MRC. Execute a consulta usando o modelo para que suas métricas sejam certificadas pelo MRC.

Para rodar a consulta certificada pelo MRC usando o modelo:

  1. Siga as instruções em Como criar uma consulta, não se esquecendo de selecionar YouTube Reserve como o ponto de compra e Visibilidade dos vídeos como o modelo de consulta.
  2. Clique no botão Executar ao lado de Usar modelo.

Consultar métricas de tráfego inválido e visibilidade usando a API

É possível recuperar as métricas de visibilidade e tráfego inválido na API ADH usando os endpoints generateIvtReport e startAnalysis. Para o tráfego inválido, as métricas precisam ser recuperadas usando generateIvtReport para que o marcador adh-mrc-accredited seja aplicado e suas métricas recebam a certificação do MRC. Da mesma forma, a consulta global especificada abaixo precisa ser usada para métricas de visibilidade com a API ADH para certificação do MRC. Saiba nesta seção como enviar uma solicitação para esse endpoint usando a biblioteca de cliente Python.

Siga as instruções de configuração e autorização/autenticação no guia de início rápido da API.

Depois de substituir os campos a seguir por informações relevantes para sua conta, execute a consulta abaixo para gerar um relatório de tráfego inválido das campanhas YouTube Reserve :

  • Arquivo de chaves secretas dos clientes
  • ID de cliente
  • Chave de API
  • Order IDs
  • Fuso horário

Exemplo de código

from __future__ import print_function
import json
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build

# If modifying these scopes, delete the file `token.json`.
SCOPES
= ['https://www.googleapis.com/auth/adsdatahub']
TOKEN_FILE
= 'token.json'

creds
= None

# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists(TOKEN_FILE):
    creds
= Credentials.from_authorized_user_file(TOKEN_FILE, SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
   
if creds and creds.expired and creds.refresh_token:
        creds
.refresh(Request())
   
else:
        flow
= InstalledAppFlow.from_client_secrets_file(
           
'YOUR_CLIENT_SECRETS.json', SCOPES)
        creds
= flow.run_local_server(port=0)
   
# Save the credentials for the next run.
   
with open(TOKEN_FILE, 'w') as token:
        token
.write(creds.to_json())

service
= build('adsdatahub', 'v1', credentials=creds,
                developerKey
='YOUR_API_KEY',
                discoveryServiceUrl
='https://adsdatahub.googleapis.com/$discovery/rest?version=v1&labels=')

body
= {
   
'ads_data_customer_id': YOUR_CUSTOMER_ID,
   
'start_date': {
       
'year': 2019,
       
'month': 12,
       
'day': 15
   
},
   
'end_date': {
       
'year': 2019,
       
'month': 12,
       
'day': 20
   
},
   
'time_zone': 'YOUR_TIMEZONE',
   
'yt_reserve_dimensions': {
       
'order_ids': [YOUR_ORDER_IDS],
       
'metric_type': 'METRIC_TYPE_IMPRESSION'
   
},
   
'dest_table': 'YOUR_DESTINATION_TABLE'
}

resp
= service.customers().generateIvtReport(name='customers/YOUR_CUSTOMER_ID,
                                             body=body).execute()
print(json.dumps(resp))
from __future__ import print_function
import json
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build

# If modifying these scopes, delete the file `token.json`.
SCOPES
= ['https://www.googleapis.com/auth/adsdatahub']
TOKEN_FILE
= 'token.json'

creds
= None

# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists(TOKEN_FILE):
    creds
= Credentials.from_authorized_user_file(TOKEN_FILE, SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
   
if creds and creds.expired and creds.refresh_token:
        creds
.refresh(Request())
   
else:
        flow
= InstalledAppFlow.from_client_secrets_file(
           
'YOUR_CLIENT_SECRETS.json', SCOPES)
        creds
= flow.run_local_server(port=0)
   
# Save the credentials for the next run.
   
with open(TOKEN_FILE, 'w') as token:
        token
.write(creds.to_json())

service
= build('adsdatahub', 'v1', credentials=creds,
                developerKey
='YOUR_API_KEY',
                discoveryServiceUrl
='https://adsdatahub.googleapis.com/$discovery/rest?version=v1&labels=')

name
= 'customers/global/analysisQueries/ad88e8562a8f4baa9c8522945fe95522'
body
= {
 
'spec': {
   
'ads_data_customer_id': YOUR_CUSTOMER_ID,
   
'start_date': {
     
'year': 2019,
     
'month': 12,
     
'day': 15
   
},
   
'end_date': {
     
'year': 2019,
     
'month': 12,
     
'day': 20
   
},
   
'time_zone': 'YOUR_TIMEZONE',
   
'parameter_values': {
     
'line_item_ids': {
       
'array_value': {
         
'values': [
           
{
             
'value': 'YOUR_LINE_ITEM_ID'
           
},
         
]
       
}
     
}
   
}
 
},
 
'dest_table': 'YOUR_DESTINATION_TABLE',
 
'customer_id': YOUR_CUSTOMER_ID
}

resp
= service.customers().analysisQueries().start(name=name,body=body).execute()
print(json.dumps(resp))