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

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

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

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

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

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

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

דוחות מתוזמנים נוצרים כקובצי CSV פשוטים ומאוחסנים באופן אוטומטי בצורה מאובטחת ב-Google Cloud Storage. עם זאת, לא ניתן לגשת הקטגוריות של Google Cloud Storage שמכילות את הקבצים האלה באופן ישיר. במקום זאת, ניתן להוריד קבצים באופן ידני דרך Display & ממשק המשתמש של Video 360 או אחזור של 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);
}