העלאת קובץ נתונים מובְנים

אתם יכולים ליצור ולעדכן משאבים, כולל משאבי YouTube, באופן פרוגרמטי ובכמות גדולה על ידי העלאה של קובצי נתונים מובנים באמצעות Display & Video 360 API. בדף הזה מוסבר איך להכין ולהעלות קובץ נתונים מובנה באמצעות ה-API.

בכל יום אפשר להעלות עד 30 קבצים של נתונים מובְנים לכל מזהה מפרסם דרך פרויקט ב-Google Cloud.

הכנת קובץ נתונים מובְנים להעלאה

קובצי נתונים מובְנים שמועלים צריכים להיות גרסאות שעברו שינוי של קובצי נתונים מובְנים שהורדו לאחרונה מאותו סוג קובץ ומאותו מפרסם. כדי להכין את קובץ הנתונים המובְנים שהורדתם להעלאה, מבצעים את העדכונים הבאים:

  • מוסיפים רשומות לכל משאב חדש שרוצים ליצור.
  • מעדכנים את כל הרשומות הקיימות של המשאבים שרוצים לעדכן.
  • כדי להקטין את גודל הקובץ, לקצר את זמן העיבוד ולמנוע עדכונים לא מכוונים, צריך להסיר את כל הרשומות שלא נוספו או עודכנו.

לפני שמעלים את הקובץ, צריך לוודא את הדברים הבאים:

  • הקובץ הוא קובץ CSV.
  • כל הרשומות בקובץ מתייחסות למשאבים ששייכים לאותו מפרסם אב.
  • הקובץ לא מכיל יותר מ-10,000 רשומות.

העלאת קובץ

מעלים קובץ נתונים מובְנים באמצעות ה-method‏ advertisers.sdfuploadtasks.upload. הבקשה הזו יוצרת משימת העלאה של SDF‏ Operation. הפעולה הזו, שפועלת לאורך זמן, מעבדת את הקובץ שהועלה, יוצרת משאבים ומעדכנת אותם על סמך תוכן הקובץ, ומפיקה קובצי תוצאות שבהם מפורטים העדכונים שהצליחו והעדכונים שנכשלו.

כך מעלים קובץ נתונים מובְנים ומאחזרים את Operation שמתקבל:

# Import the object used as the media body for the upload request.
from apiclient.http import MediaFileUpload

# Provide the parent advertiser ID for the resources in the SDF.
# The ID value must be a str and not an int.
advertiser_id = advertiser-id

# Provide the filename and local path to the media file.
sdf_filename = sdf-filename
sdf_path = sdf-path

# Create the request body.
body = {
  'filename': sdf_filename,
  'advertiserId': advertiser_id
}

# Create the upload object and use a default MIME type if not identified.
media = MediaFileUpload(sdf_path)
if not media.mimetype():
  media = MediaFileUpload(sdf_filename,'application/octet-stream')

# Upload the structured data file.
upload_response = service.advertisers().sdfuploadtasks().upload(
  advertiserId=advertiser_id,
  body=body,
  media_body=media
).execute()

# Print resulting Operation name.
print(f'SDF was successfully uploaded. Operation {upload_response["name"]} was '
       'created to process the uploaded file.')