יצירת דוחות מתוזמנים וגישה אליהם

אפשר ליצור ולתזמן דוחות באמצעות ממשק המשתמש של Google Display & Video 360 או ה-API. לדוגמה, משתמשי קצה יכולים להגדיר דוח יומי שבו מוצגות החשיפות מאתמול, או דוח חודשי שבו מוצגת ההוצאה הכוללת.

יצירת דוחות מתוזמנים

יוצרים דוח מתוזמן חדש דרך ממשק הדיווח של Display & Video 360 או באמצעות שיטת ה-API queries.create. פרטים מלאים על פונקציונליות הדיווח ב-Display & Video 360 והוראות ליצירת דוחות חדשים זמינים באתר התמיכה של Display & Video 360.

אפשר לתזמן דוחות בזמן היצירה באמצעות השדה Repeats בממשק המשתמש והשדה schedule ב-API. צריך להגדיר מרווח זמן מתאים בשדות האלה.

לאחר הגדרת השדה המתאים, הדוח יופק לפי לוח הזמנים הזה ולאחר מכן הדוחות שייווצרו יהיו זמינים להורדה.

גישה לדוחות מתוזמנים

דוחות מתוזמנים נוצרים כקובצי CSV פשוטים והם מאוחסנים באופן אוטומטי ומאובטח ב-Google Cloud Storage. עם זאת, לא ניתן לגשת ישירות לקטגוריות של Google Cloud Storage שמכילות את הקבצים האלה. במקום זאת, אפשר להוריד אותם באופן ידני מממשק המשתמש של Display & Video 360 או לאחזר אותם באופן פרוגרמטי באמצעות כתובות URL שאושרו מראש שהתקבלו מה-API.

למטה יש דוגמה לשימוש ב-API כדי להוריד קובץ דוח. בדוגמה הזו, נעשה שימוש ב-queries.reports.list יחד עם הפרמטר orderBy כדי לאחזר את הדוח האחרון במסגרת שאילתה. לאחר מכן השדה Report.reportMetadata.googleCloudStoragePath משמש לאיתור קובץ הדוח ולהורדת התוכן שלו לקובץ CSV מקומי.

Java

פעולות ייבוא נדרשות:

import com.google.api.client.googleapis.media.MediaHttpDownloader;
import com.google.api.client.googleapis.util.Utils;
import com.google.api.client.http.GenericUrl;
import com.google.api.services.doubleclickbidmanager.DoubleClickBidManager;
import com.google.api.services.doubleclickbidmanager.model.ListReportsResponse;
import com.google.api.services.doubleclickbidmanager.model.Report;
import java.io.FileOutputStream;
import java.io.OutputStream;

קוד לדוגמה:

long queryId = query-id;

// Call the API, listing the reports under the given queryId from most to
// least recent.
ListReportsResponse reportListResponse =
    service
        .queries()
        .reports()
        .list(queryId)
        .setOrderBy("key.reportId desc")
        .execute();

// Iterate over returned reports, stopping once finding a report that
// finished generating successfully.
Report mostRecentReport = null;
if (reportListResponse.getReports() != null) {
  for (Report report : reportListResponse.getReports()) {
    if (report.getMetadata().getStatus().getState().equals("DONE")) {
      mostRecentReport = report;
      break;
    }
  }
} else {
  System.out.format("No reports exist for query Id %s.\n", queryId);
}

// Download report file of most recent finished report found.
if (mostRecentReport != null) {
  // Retrieve GCS URL from report object.
  GenericUrl reportUrl =
      new GenericUrl(mostRecentReport.getMetadata().getGoogleCloudStoragePath());

  // Build filename.
  String filename =
      mostRecentReport.getKey().getQueryId() + "_"
          + mostRecentReport.getKey().getReportId() + ".csv";

  // Download the report file.
  try (OutputStream output = new FileOutputStream(filename)) {
    MediaHttpDownloader downloader =
        new MediaHttpDownloader(Utils.getDefaultTransport(), null);
    downloader.download(reportUrl, output);
  }
  System.out.format("Download of file %s complete.\n", filename);
} else {
  System.out.format(
      "There are no completed report files to download for query Id %s.\n",
      queryId);
}

Python

פעולות ייבוא נדרשות:

from contextlib import closing
from six.moves.urllib.request import urlopen

קוד לדוגמה:

query_id = query-id

# Call the API, listing the reports under the given queryId from most to
# least recent.
response = service.queries().reports().list(queryId=query_id, orderBy="key.reportId desc").execute()

# Iterate over returned reports, stopping once finding a report that
# finished generating successfully.
most_recent_report = None
if response['reports']:
  for report in response['reports']:
    if report['metadata']['status']['state'] == 'DONE':
      most_recent_report = report
      break
else:
  print('No reports exist for query Id %s.' % query_id)

# Download report file of most recent finished report found.
if most_recent_report != None:
  # Retrieve GCS URL from report object.
  report_url = most_recent_report['metadata']['googleCloudStoragePath']

  # Build filename.
  output_file = '%s_%s.csv' % (report['key']['queryId'], report['key']['reportId'])

  # Download the report file.
  with open(output_file, 'wb') as output:
    with closing(urlopen(report_url)) as url:
      output.write(url.read())
  print('Download of file %s complete.' % output_file)
else:
  print('There are no completed report files to download for query Id %s.' % query_id)

PHP

$queryId = query-id;

// Call the API, listing the reports under the given queryId from most to
// least recent.
$optParams = array('orderBy' => "key.reportId desc");
$response = $service->queries_reports->listQueriesReports($queryId, $optParams);

// Iterate over returned reports, stopping once finding a report that
// finished generating successfully.
$mostRecentReport = null;
if (!empty($response->getReports())) {
  foreach ($response->getReports() as $report) {
    if ($report->metadata->status->state == "DONE") {
      $mostRecentReport = $report;
      break;
    }
  }
} else {
  printf('<p>No reports exist for query ID %s.</p>', $queryId);
}

// Download report file of most recent finished report found.
if ($mostRecentReport != null) {
  // Build filename.
  $filename = $mostRecentReport->key->queryId . '_' . $mostRecentReport->key->reportId . '.csv';

  // Download the report file.
  file_put_contents($filename, fopen($mostRecentReport->metadata->googleCloudStoragePath, 'r'));
  printf('<p>Download of file %s complete.</p>', $filename);
} else {
  printf('<p>There are no completed report files to download for query Id %s.</p>', $queryId);
}