סקירה כללית
בהוראות שבהמשך מפורטות דוגמאות לשליחת שאילתות באמצעות ה-API גם על תנועה חוקית של ניראות וגם על תנועה לא חוקית. המדדים האלה מוגבלים למלאי שטחי פרסום שנרכש דרך Google Ads, רשת המדיה Video 360 ו-YouTube Reserve.
לתשומת ליבכם: כדי להשתמש במדדי הצפיות במודעות TrueView שקיבלו אישור על ידי ה-MRC, צריך להשתמש ב-ADH API, כי לא משויכת אליו שאילתה בתבנית. בנוסף, אין לבלבל בין מדדי הצפיות ב-TrueView לבין מדדי הניראות.
צריך לבחור את דלת הקנייה שעבורה רוצים להריץ שאילתה על מדדי הניראות:
שליחת שאילתה למדדי הניראות באמצעות ממשק המשתמש
שאילתת הניראות בתבנית מספקת מדדים שקיבלו אישור מה-MRC.
האישור של MRC הוא בינארי – אפשר לקבל אישור על התוצאות או לא – והוא חל על כל טבלת התוצאות. ב-BigQuery, המערכת מחילה את התווית adh-mrc-accredited
על כל התוצאות שקיבלו אישור מטעם ה-MRC. כדי שהמדדים שלכם יקבלו אישור מ-MRC, צריך להריץ את השאילתה בתבנית.
כדי להריץ את השאילתה שאושרה על ידי MRC באמצעות התבנית:
- עליכם לפעול לפי ההוראות ליצירת שאילתה ולבחור באפשרות YouTube Reserve בתור דלת הקנייה וניראות של מודעות וידאו בתור תבנית השאילתה.
- לוחצים על הלחצן הפעלה לצד שימוש בתבנית.
שליחת שאילתות לגבי מדדי תנועה לא חוקית וניראות באמצעות ה-API
ניתן לאחזר מדדים של תנועה לא חוקית וניראות מ-ADH API באמצעות נקודות הקצה generateIvtReport
ו-startAnalysis
. במקרה של תנועה פסולה, צריך לאחזר את המדדים דרך generateIvtReport
כדי שהתווית adh-mrc-accredited
תיושם והמדדים יקבלו אישור מ-MRC. באופן דומה, יש להשתמש בשאילתה הגלובלית שצוינה בהמשך כדי לקבל מדדי ניראות דרך ADH API, לצורך קבלת אישור מטעם ה-MRC. בקטע הזה מוסבר איך לשלוח בקשה לנקודת הקצה הזו באמצעות ספריית הלקוח של Python.
פועלים לפי ההוראות להגדרה ולהרשאה/אימות המפורטות במדריך למתחילים של API.
אחרי שמחליפים את השדות הבאים במידע שרלוונטי לחשבון שלכם, אפשר להריץ את השאילתה הבאה כדי לאחזר דוח על תנועה לא חוקית YouTube Reserve הקמפיינים:
- קובץ Secret של לקוחות
- מספר לקוח
- מפתח API
- Order IDs
- אזור זמן
קוד לדוגמה
תנועה לא חוקית (IVT)
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))
חישוב מדדי הניראות בניכוי תנועה פסולה כללית (GIVT)
יש להשתמש בנוסחאות הבאות כדי להסיק מדדי ניראות שקיבלו אישור MRC, בניכוי תנועה לא חוקית כללית (GIVT):
- סה"כ חשיפות (נטו של GIVT): סה"כ חשיפות - חשיפות לא חוקיות כלליות
- חשיפות שניתנות לצפייה (נטו של GIVT): חשיפות שניתנות לצפייה + חשיפות לא חוקיות שניתנות לצפייה - חשיפות שניתנות לצפייה
- חשיפות שניתנות למדידה (נטו של GIVT): חשיפות שניתנות למדידה + חשיפות לא חוקיות שניתנות למדידה – חשיפות שניתנות למדידה של GIVT
- חשיפות כשירות (נטו של GIVT): חשיפות תקינות + חשיפות כשירות לא תקפות – חשיפות תקינות של תנועה לא חוקית כללית (GIVT)
- חשיפות שאינן ניתנות לצפייה (נטו של GIVT) : חשיפות שניתנות למדידה (נטו של GIVT) - חשיפות שניתנות לצפייה (נטו של GIVT)
- חשיפות שלא ניתנות למדידה (נטו של GIVT): חשיפות תקינות (נטו של GIVT) – חשיפות שניתנות למדידה (נטו של GIVT)
- אחוז החשיפות שניתנות למדידה (נטו של GIVT): חשיפות שניתנות למדידה (נטו של תנועה פסולה כללית (GIVT)) / חשיפות כשירות (נטו של GIVT)
- % החשיפות שניתנות לצפייה (נטו של GIVT): חשיפות שניתנות לצפייה (נטו של GIVT) / חשיפות שניתנות למדידה (נטו של GIVT)