Sorgu görüntülenebilirliği ve geçersiz trafik metrikleri

Genel bakış

Aşağıdaki talimatlarda, hem geçerli görüntülenebilirlik trafiğinin hem de geçersiz trafiğin API üzerinden nasıl sorgulanacağına dair örnekler sağlanmaktadır. Bu metrikler Google Ads, Display & Video 360 ve YouTube Reserve aracılığıyla satın alınan envanterlerle sınırlıdır.

MRC onaylı TrueView görüntülemesi görüntüleme metrikleri, ilişkili şablonlu sorgu bulunmadığından ADH API'nin kullanılmasını gerektirir. Ayrıca, TrueView görüntülemesi görüntüleme metrikleri görüntülenebilirlik metrikleriyle karıştırılmamalıdır.

Görüntülenebilirlik metriklerini sorgulamak istediğiniz satın alma ortamını seçin:

Kullanıcı arayüzünü kullanarak görüntülenebilirlik metriklerini sorgulama

Şablonlu görüntülenebilirlik sorgusu, MRC onaylı metrikler sağlar.

İkili veri olan MRC onayı (sonuçlarınız onaylı olabilir veya olmayabilir) sonuç tablonuzun tamamı için geçerlidir. BigQuery'de adh-mrc-accredited etiketi, MRC onaylı tüm sonuçlara uygulanır. Metriklerinizin MRC onaylı olması için sorguyu şablon üzerinden çalıştırmanız gerekir.

MRC onaylı sorguyu şablon üzerinden çalıştırmak için:

  1. Satın alma ortamı olarak YouTube Reserve ve sorgu şablonu olarak Video Görüntülenebilirliği'ni seçtiğinizden emin olun. Ardından, sorgu oluşturma bölümündeki talimatları uygulayın.
  2. Şablonu kullan'ın yanındaki Çalıştır düğmesini tıklayın.

API'yi kullanarak geçersiz trafik ve görüntülenebilirlik metriklerini sorgulama

Geçersiz trafik ve görüntülenebilirlik metrikleri, generateIvtReport ve startAnalysis uç noktaları kullanılarak ADH API'den alınabilir. Geçersiz trafik için metriklerinizin generateIvtReport üzerinden alınması gerekir. Böylece, adh-mrc-accredited etiketi uygulanabilir ve metrikleriniz MRC onaylı olabilir. Benzer şekilde, görüntülenebilirlik metrikleri için MRC onayına ilişkin ADH API üzerinden aşağıda belirtilen genel sorgu kullanılmalıdır. Bu bölümde, Python istemci kitaplığı kullanılarak bu uç noktaya nasıl istek gönderileceği açıklanmaktadır.

API hızlı başlangıç kılavuzundaki kurulum ve yetkilendirme/kimlik doğrulama talimatlarını uygulayın.

Aşağıdaki alanları hesabınızla ilgili bilgilerle değiştirdikten sonra, aşağıdaki sorguyu çalıştırarak YouTube Reserve kampanyalarınız için geçersiz trafik raporu alabilirsiniz:

  • İstemci gizli anahtarı dosyası
  • Müşteri kimliği
  • API anahtarı
  • Order IDs
  • Saat dilimi

Örnek kod

Geçersiz trafik

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))

Görüntülenebilirlik metrikleri

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))