ניראות של שאילתות ומדדי תנועה לא חוקיים

סקירה כללית

בהוראות שבהמשך מתוארות דוגמאות כיצד לשלוח שאילתות באמצעות ה-API על תנועה חוקית ניראות ועל תנועה לא חוקית. המדדים האלה מוגבלים למלאי שטחי פרסום שנרכש באמצעות Google Ads, Display & Video 360 ו-YouTube Reserve.

הערה: למדדי צפייה בצפייה במודעות TrueView, שקיבלו את האישור של MRC, צריך להשתמש ב-ADH API, כי אין שאילתה משויכת לתבנית. כמו כן, חשוב להבדיל בין ערכי צפיות במודעות TrueView לבין מדדי ניראות.

בוחרים את דלת הקנייה שעבורה רוצים לשלוח שאילתה לגבי מדדי הניראות:

שאילתה לגבי מדדי ניראות באמצעות ממשק המשתמש

השאילתה בנוגע לניראות לפי תבנית מספקת מדדים שאושרו על ידי MRC.

תהליך ההסמכה של MRC הוא בינארי. האישור יכול להיות אישור או אי אישור של התוצאות, והוא חל על כל טבלת התוצאות. ב-BigQuery, התווית adh-mrc-accredited חלה על כל התוצאות שאושרו על ידי MRC. צריך להריץ את השאילתה דרך התבנית כדי שהמדדים שלכם יקבלו אישור מ-MRC.

כדי להריץ באמצעות התבנית שאילתה שקיבלה את אישור ה-MRC:

  1. פועלים לפי ההוראות ליצירת שאילתה, ומקפידים לבחור באפשרות YouTube Reserve בתור דלת הרכישה ובניראות של מודעות וידאו בתור תבנית השאילתה.
  2. לוחצים על הלחצן הפעלה לצד האפשרות שימוש בתבנית.

שליחת שאילתות על מדדי תנועה לא חוקית וניראות באמצעות ה-API

אפשר לאחזר את המדדים של תנועה לא חוקית ושל ניראות מ-ADH API באמצעות נקודות הקצה generateIvtReport ו-startAnalysis. במקרה של תנועה לא חוקית, יש לאחזר את המדדים דרך generateIvtReport כדי שניתן יהיה להחיל את התווית adh-mrc-accredited ושהמדדים יקבלו אישור מ-MRC. בדומה לכך, יש להשתמש בשאילתה הגלובלית המפורטת בהמשך למדדי ניראות דרך ADH API לקבלת אישור של MRC. בקטע הזה מוסבר איך לשלוח בקשה לנקודת הקצה הזו באמצעות ספריית הלקוח של Python.

פועלים לפי הוראות ההגדרה וההרשאה/האימות שבמדריך למתחילים של ה-API.

אחרי שמחליפים את השדות הבאים במידע שרלוונטי לחשבון, אפשר להריץ את השאילתה הבאה כדי לאחזר דוח תנועה לא חוקית עבור YouTube Reserve הקמפיינים:

  • קובץ סודות לקוח
  • מספר לקוח
  • מפתח 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))

חישוב מדדי ניראות נטו של תנועה לא חוקית כללית

הנוסחאות הבאות יעזרו לכם להפיק מדדי ניראות שאושרו על ידי MRC נטו מתנועה לא חוקית כללית (GIVT):

  • סה"כ חשיפות (נטו GIVT): סה"כ חשיפות – חשיפות לא חוקיות כלליות
  • חשיפות שניתנות לצפייה (נטו של GIVT): חשיפות שניתנות לצפייה + חשיפות לא חוקיות שניתנות לצפייה – חשיפות שניתנות לצפייה GIVT
  • חשיפות שניתנות למדידה (נטו GIVT): חשיפות שניתנות למדידה + חשיפות לא חוקיות שניתנות למדידה – חשיפות שניתנות למדידה במסגרת תנועה לא חוקית כללית (GIVT)
  • חשיפות תקינות (בניכוי GIVT): חשיפות תקינות + חשיפות תקינות לא חוקיות – חשיפות תקינות של GIVT
  • חשיפות שאינן ניתנות לצפייה (נטו GIVT) : חשיפות שניתנות למדידה (נטו GIVT) – חשיפות שניתנות לצפייה (נטו GIVT)
  • חשיפות שלא ניתנות למדידה (נטו GIVT): חשיפות תקינות (בניכוי GIVT) – חשיפות שניתנות למדידה (נטו GIVT)
  • % חשיפות שניתנות למדידה (נטו GIVT): חשיפות שניתנות למדידה (נטו GIVT) / חשיפות תקינות (בניכוי GIVT)
  • % חשיפות שניתנות לצפייה (נטו GIVT): חשיפות שניתנות לצפייה (נטו GIVT) / חשיפות שניתנות למדידה (נטו מ-GIVT)