DFP セールス マネージャの調整

このガイドでは、調整サービスについて説明するとともに、請求額と配信数を取得し調整する方法を紹介します。

はじめに

調整サービスの利用を開始するにあたっては、DFP の調整処理についてしっかりと理解しておくことが重要です。以下に示すように、API では複数のエンティティによってこの処理を行います。各エンティティの相関関係は次の図のとおりです。 調整のエンティティ

ReconciliationReport

ReconciliationReport オブジェクトは、請求対象期間の配信データの最上位にある親にあたります。ReconciliationReport には、読み取り専用の処理ステータスとして DRAFTRECONCILEDREVERTED があります。これは ReconciliationReport のオーダーのステータスに基づいて設定されます。たとえば、すべての ReconciliationOrderReport のステータスが RECONCILED となっている場合は、ReconciliationReport のステータスも RECONCILED になります。

ReconciliationReportRow または ReconciliationOrderReport を取得するときには、ReconciliationReport の ID が必要です。

編集可能なフィールド
ReconciliationReport.notes

ReconciliationOrderReport

ReconciliationOrderReport は、調整レポートに含まれる 1 つのオーダーを表します。オーダーに対応する広告申込情報で調整データを確認、変更したら、ReconciliationOrderReport を送信できます。配信や収益のデータを訂正する必要がある場合は、ReconciliationOrderReport を取り消すことができます。

編集可能なフィールド
ReconciliationOrderReport.proposalGrossBillableRevenueManualAdjustment

ReconciliationLineItemReport

ReconciliationLineItemReport には、請求対象期間における 1 つの広告申込情報の配信と請求に関するデータが含まれます。第三者広告サーバーのボリュームを設定したり、手動のボリューム調整を追加したり、請求対象収益の全体をオーバーライドしたりできます。

編集可能なフィールド
ReconciliationLineItemReport.reconciliationSource
ReconciliationLineItemReport.thirdPartyVolume
ReconciliationLineItemReport.manualVolume 
ReconciliationLineItemReport.billableRevenueOverrides

ReconciliationReportRow

ReconciliationReportRow にはクリエイティブ単位の配信データが含まれます。このエンティティは、調整レポート、広告申込情報、クリエイティブによって一意に識別されます。第三者広告サーバーからの配信情報を入力するには thirdPartyVolume フィールドを使用します。DFP のボリュームまたは第三者のボリュームをオーバーライドする必要がある場合は、manualVolume フィールドを使用します。

編集可能なフィールド
ReconciliationReportRow.billFrom
ReconciliationReportRow.thirdPartyVolume
ReconciliationReportRow.manualVolume
ReconciliationReportRow.comments

請求対象期間の配信数を取得する

特定の月の調整レポートを取得するには、レポートの開始日を条件にフィルタリングします。

Java


  ReconciliationReportServiceInterface reconciliationReportService =
      dfpServices.get(session, ReconciliationReportServiceInterface.class);

  // Get the NetworkService.
  NetworkServiceInterface networkService =
      dfpServices.get(session, NetworkServiceInterface.class);

  // Get the first day of last month in your network's time zone.
  Network network = networkService.getCurrentNetwork();
  DateTime lastMonth = new DateTime(DateTimeZone.forID(network.getTimeZone()))
      .minusMonths(1).dayOfMonth().withMinimumValue();

  // Create a statement to select reconciliation reports.
  StatementBuilder statementBuilder = new StatementBuilder()
      .where("startDate = :startDate")
      .orderBy("id ASC")
      .limit(1)
      .withBindVariableValue("startDate", lastMonth.toString("YYYY-MM-dd"));

  // Get the reconciliation report.
  ReconciliationReportPage page =
      reconciliationReportService.getReconciliationReportsByStatement(
          statementBuilder.toStatement());

PHP


    $reconciliationReportService =
        $dfpServices->get($session, ReconciliationReportService::class);

    $networkService = $dfpServices->get($session, NetworkService::class);
    $network = $networkService->getCurrentNetwork();

    // Create a statement to select reconciliation reports.
    $pageSize = StatementBuilder::SUGGESTED_PAGE_LIMIT;
    $statementBuilder = (new StatementBuilder())
        ->where('startDate = :startDate')
        ->orderBy('id ASC')
        ->limit($pageSize)
        ->withBindVariableValue(
            'startDate',
            DfpDateTimes::fromDateTime(
                new DateTime(
                    'first day of last month',
                    new DateTimeZone($network->getTimeZone())
                )
            )->getDate()
        );

    $page = $reconciliationReportService->getReconciliationReportsByStatement(
        $statementBuilder->toStatement());

ここで、ReconciliationReport の ID を使用して、該当のレポート用にすべてのオーダー、広告申込情報、あるいはクリエイティブを取得できます。1 つのレポートの広告申込情報を取得するフィルタを記述したコードの例を以下に示します。

Java


  // Create a statement to select reconciliation line item reports.
  StatementBuilder statementBuilder = new StatementBuilder()
      .where("reconciliationReportId = :reconciliationReportId AND lineItemId != :lineItemId")
      .orderBy("lineItemId ASC")
      .limit(StatementBuilder.SUGGESTED_PAGE_LIMIT)
      .withBindVariableValue("reconciliationReportId", reconciliationReportId)
      .withBindVariableValue("lineItemId", 0);

PHP


    // Create a statement to select reconciliation line item reports.
    $pageSize = StatementBuilder::SUGGESTED_PAGE_LIMIT;
    $statementBuilder = (new StatementBuilder())
        ->where('reconciliationReportId = :reconciliationReportId AND '
            . 'lineItemId != :lineItemId')
        ->orderBy('lineItemId ASC')
        ->limit($pageSize)
        ->withBindVariableValue(
            'reconciliationReportId', $reconciliationReportId)
        ->withBindVariableValue('lineItemId', 0);

広告申込情報単位で収益を調整する

ReconciliationLineItemReportService を使用して、広告申込情報単位で第三者広告サーバーからの配信データを入力できます。DFP の配信数を調整する必要がある場合は、以下の例のように手動のボリュームを使用します。DFP 管理画面で、調整済みボリュームのセルを編集することと同じです。

Java


  // Set and use a manual volume for billing. This example splits the difference between DFP
  // and the third party volume.
  lineItemReport.setManualVolume(
      (lineItemReport.getDfpVolume() + lineItemReport.getThirdPartyVolume()) / 2);
  lineItemReport.setReconciliationSource(BillFrom.MANUAL);

  ReconciliationLineItemReport[] updatedLineItemReports =
      reconciliationLineItemReportService.updateReconciliationLineItemReports(
          new ReconciliationLineItemReport[] {lineItemReport});

PHP


    // Set and use a manual volume for billing. This example splits the
    // difference between DFP and the third party volume.
    $lineItemReport->setManualVolume(
        ($lineItemReport->getDfpVolume()
            + $lineItemReport->getThirdPartyVolume()) / 2);
    $lineItemReport->setReconciliationSource(BillFrom::MANUAL);

    // Update the reconciliation line item report on the server.
    $updatedLineItemReports = $reconciliationLineItemReportService
        ->updateReconciliationLineItemReports([$lineItemReport]);

一部の収益フィールドの値は、ネットワーク、プロポーザル、広告申込情報の設定に依存します。詳しくは、リファレンス ドキュメントをご覧ください。

請求対象収益をオーバーライドする

配信データの調整だけでは不十分な場合は、請求対象収益を手動でオーバーライドすることもできます。それには billableRevenueOverride設定します。このエンティティは、課金モデルに応じて、プロポーザル広告申込情報を調整する際に総額と純額のどちらを使用するかを示します。

クリエイティブ単位で収益を調整する

ReconciliationReportRowService を使用して、クリエイティブ単位で第三者広告サーバーからの配信データや手動のボリュームを入力できます。ReconciliationReportRow は、固有 ID ではなく、reconciliationReportId、lineItemId、creativeId によって一意に識別されます。

Java


  // Get the ReconciliationReportRowService.
  ReconciliationReportRowServiceInterface reconciliationReportRowService =
      dfpServices.get(session, ReconciliationReportRowServiceInterface.class);

  // Create a statement to select reconciliation report rows.
  StatementBuilder statementBuilder = new StatementBuilder()
      .where("id = :reconciliationReportRowId")
      .orderBy("id ASC")
      .limit(StatementBuilder.SUGGESTED_PAGE_LIMIT)
      .withBindVariableValue("reconciliationReportRowId", reconciliationReportRowId);

  // Get reconciliation report rows by statement.
  ReconciliationReportRowPage page =
      reconciliationReportRowService.getReconciliationReportRowsByStatement(
          statementBuilder.toStatement());

  ReconciliationReportRow row = Iterables.getOnlyElement(Arrays.asList(page.getResults()));

  // Set a comment on the reconciliation report row.
  row.setComments("Third party volume didn't match DFP - we agreed to split the difference");

  // Set and use a manual volume for billing.
  row.setManualVolume((row.getDfpVolume() + row.getThirdPartyVolume()) / 2);
  row.setReconciliationSource(BillFrom.MANUAL);

  ReconciliationReportRow[] updatedRows =
      reconciliationReportRowService.updateReconciliationReportRows(
          new ReconciliationReportRow[] {row});

PHP


    $reconciliationReportRowService = $dfpServices->get(
        $session, ReconciliationReportRowService::class);

    // Create a statement to select the reconciliation report rows to update.
    $pageSize = StatementBuilder::SUGGESTED_PAGE_LIMIT;
    $statementBuilder = (new StatementBuilder())
        ->where('reconciliationReportId = :reconciliationReportId AND id = '
            . ':reconciliationReportRowId')
        ->orderBy('id ASC')
        ->limit($pageSize)
        ->withBindVariableValue(
            'reconciliationReportId', $reconciliationReportId)
        ->withBindVariableValue(
            'reconciliationReportRowId', $reconciliationReportRowId);

    $page = $reconciliationReportRowService
        ->getReconciliationReportRowsByStatement(
            $statementBuilder->toStatement());
    $row = $page->getResults()[0];

    // Set a comment on the reconciliation report row.
    $row->setComments('Third party volume didn\'t match DFP - we agreed to '
        . 'split the difference');

    // Set and use a manual volume for billing.
    $row->setManualVolume(
        ($row->getDfpVolume() + $row->getThirdPartyVolume()) / 2);
    $row->setReconciliationSource(BillFrom::MANUAL);

    // Update the reconciliation report rows on the server.
    $updatedRows =
        $reconciliationReportRowService->updateReconciliationReportRows([$row]);

オーダーの配信数を送信する、または取り消す

オーダーの配信データを確認、調整したら、ReconciliationOrderReport を送信できます。

Java


  // Get the ReconciliationOrderReportService.
  ReconciliationOrderReportServiceInterface reconciliationOrderReportService =
      dfpServices.get(session, ReconciliationOrderReportServiceInterface.class);

  // Create a statement to select reconciliation order reports.
  StatementBuilder statementBuilder = new StatementBuilder()
      .where("id = :id")
      .orderBy("id ASC")
      .limit(1)
      .withBindVariableValue("id", reconciliationOrderReportId);

  // Create action to submit reconciliation order reports.
  com.google.api.ads.dfp.axis.v201702.SubmitReconciliationOrderReports action =
      new com.google.api.ads.dfp.axis.v201702.SubmitReconciliationOrderReports();

  // Perform action.
  UpdateResult result =
      reconciliationOrderReportService.performReconciliationOrderReportAction(
          action, statementBuilder.toStatement());

PHP


    $reconciliationOrderReportService =
        $dfpServices->get($session, ReconciliationOrderReportService::class);

    // Create a statement to select the reconciliation order reports to submit.
    $pageSize = StatementBuilder::SUGGESTED_PAGE_LIMIT;
    $statementBuilder = (new StatementBuilder())
        ->where('id = :id')
        ->orderBy('id ASC')
        ->limit($pageSize)
        ->withBindVariableValue('id', $reconciliationOrderReportId);

    // Create and perform action.
    $action = new SubmitReconciliationOrderReportsAction();
    $result = $reconciliationOrderReportService
        ->performReconciliationOrderReportAction(
            $action, $statementBuilder->toStatement());

さらに調整を加える必要がある場合は、RevertReconciliationOrderReports アクションを使ってオーダー レポートを取り消すこともできます。

よくある質問

調整サービスをレポートに使用することはできますか?

配信と収益に関する読み取り専用データを取得するには、ReportService のご利用をおすすめします。請求レポートと調整レポートについて詳しくは、DFP のヘルプセンターをご覧ください。調整サービスの主な用途は、配信情報の確認と調整です。

ReconciliationLineItemReport と ReconciliationReportRow の違いは何ですか?

ReconciliationReportRow は配信データをクリエイティブ単位で処理するときに使用し、ReconciliationLineItemReport は広告申込情報単位で処理するときに使用します。

ReconciliationReport を送信する方法を教えてください。

ReconciliationReport を直接送信することはできません。すべての ReconciliationOrderReport を送信すると、ReconciliationReport のステータスは RECONCILED になります。

ボリューム フィールドに単位がありませんが、どう判断すればよいですか?

ボリューム フィールドの単位は、LineItem または ProposalLineItem のレートタイプによって決まります。たとえば、RateType が CPC の場合はクリック数、CPM の場合はインプレッション数、CPD の場合は広告申込情報の日数となります。

手動のボリュームを設定しましたが、調整後のボリュームが変わりませんでした。どうしたらよいですか?

手動のボリュームだけでなく、請求対象のボリュームも設定する必要があります。

調整サービスで取得するデータと ReportService で取得するデータはどこが違いますか?

調整サービスを使用すると、プロポーザルのローカル タイムゾーンに基づくボリュームと収益のデータを取得できます。一方、ReportService を使用すると、ネットワークのタイムゾーンに基づくデータを取得できます。

フィードバックを送信...

Doubleclick for Publishers
Doubleclick for Publishers
ご不明な点がありましたら、Google のサポートページをご覧ください。