ایجاد و دسترسی به گزارش های زمان بندی شده

می‌توانید با استفاده از Google Display & Video 360 UI یا API گزارش‌ها را ایجاد و زمان‌بندی کنید. برای مثال، کاربران نهایی می‌توانند گزارش روزانه‌ای تنظیم کنند که برداشت‌های دیروز را نشان می‌دهد، یا یک گزارش ماهانه که کل هزینه‌ها را نشان می‌دهد.

ایجاد گزارش های زمان بندی شده

یک گزارش زمان‌بندی‌شده جدید در رابط گزارش‌دهی Display & Video 360 یا با روش queries.create API ایجاد کنید. جزئیات کامل در مورد عملکرد گزارش‌دهی Display & Video 360 و نحوه ایجاد گزارش‌های جدید را می‌توانید در سایت پشتیبانی Display & Video 360 بیابید.

گزارش ها را می توان در زمان ایجاد با استفاده از قسمت Repeats در UI و فیلد schedule در API برنامه ریزی کرد. این فیلدها باید روی یک بازه زمانی مناسب تنظیم شوند.

پس از تنظیم فیلد مناسب، این گزارش در آن زمان بندی اجرا می شود و گزارش های تولید شده برای دانلود در دسترس خواهند بود.

دسترسی به گزارش های زمان بندی شده

گزارش‌های زمان‌بندی‌شده به‌عنوان فایل‌های CSV ساده تولید می‌شوند و به‌طور خودکار و ایمن در Google Cloud Storage ذخیره می‌شوند. با این حال، دسترسی به سطل‌های Google Cloud Storage که حاوی این فایل‌ها هستند، امکان‌پذیر نیست. درعوض، ممکن است فایل‌ها به‌صورت دستی از رابط کاربری Display & Video 360 دانلود شوند یا با استفاده از URLهای از پیش مجاز به‌دست‌آمده از API، به‌صورت برنامه‌نویسی بازیابی شوند.

نمونه ای از استفاده از API برای دانلود فایل گزارش در زیر ارائه شده است. در این مثال، queries.reports.list با پارامتر orderBy برای بازیابی آخرین گزارش تحت یک پرس و جو استفاده می شود. سپس از قسمت Report.reportMetadata.googleCloudStoragePath برای مکان یابی فایل گزارش و دانلود محتوای آن در یک فایل CSV محلی استفاده می شود.

جاوا

واردات مورد نیاز:

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);
}

پایتون

واردات مورد نیاز:

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);
}