DFP セールス マネージャのプロポーザル広告申込情報

このガイドでは、プロポーザル広告申込情報の概要と、API を使った ProposalLineItem オブジェクトの作成方法について説明します。必須フィールドや、Proposal オブジェクトにプロポーザル広告申込情報を作成した後の手順も紹介します。

はじめに

まずプロポーザル広告申込情報について確認しましょう。DFP セールス マネージャの管理画面には、Product オブジェクトのカタログが表示されます。これは、使用可能な汎用テンプレート、または事前定義のターゲティングを表すオブジェクトです。Product オブジェクトは RateCard オブジェクトとすでに関連付けられています。RateCard オブジェクトにより、PremiumRate オブジェクトを価格設定に適用できます。請求と配信に関するその他の必須フィールドに入力していくと、ProposalLineItem オブジェクトを効率的に作成できます。これは、DFP での入稿段階前の広告申込情報オブジェクトを表す Proposal オブジェクトの下位オブジェクトです。

API を使ってプロポーザル広告申込情報を作成する

API でプロポーザル広告申込情報を作成するには、次のオブジェクトが必要です。

  • Proposal: プロポーザル広告申込情報を関連付けます。
  • RateCard: プロポーザル広告申込情報の価格を設定します。
  • Product: プロポーザル広告申込情報の基盤となります。

まず、ProposalLineItem オブジェクトをローカルで作成して、名前を割り当てます。

Java


  // Get the ProposalLineItemService.
  ProposalLineItemServiceInterface proposalLineItemService =
      dfpServices.get(session, ProposalLineItemServiceInterface.class);

  // Create a proposal line item.
  ProposalLineItem proposalLineItem = new ProposalLineItem();
  proposalLineItem.setName("Proposal line item #" + new Random().nextInt(Integer.MAX_VALUE));
    

Python


  # Initialize appropriate service.
  proposal_line_item_service = client.GetService(
      'ProposalLineItemService', version='v201705')

  # Create a single proposal line item.
  proposal_line_item = {
      'name': 'Proposal line item #%s' % uuid.uuid4(),
      ...
    

PHP


    $proposalLineItemService =
        $dfpServices->get($session, ProposalLineItemService::class);

    // Create a standard proposal line item.
    $proposalLineItem = new ProposalLineItem();
    $proposalLineItem->setName('Proposal line item #' . uniqid());
    $proposalLineItem->setLineItemType(LineItemType::STANDARD);
    

C#


  // Get the ProposalLineItemService.
  ProposalLineItemService proposalLineItemService =
      (ProposalLineItemService) user.GetService(DfpService.v201705.ProposalLineItemService);

  // Create a proposal line item.
  ProposalLineItem proposalLineItem = new ProposalLineItem();
  proposalLineItem.name = "Proposal line item #" + new Random().Next(int.MaxValue);
    

プロポーザル広告申込情報をローカルで作成したら、それをプロポーザルに関連付けて、商品とレート表を設定できます。商品からはターゲティングを継承し、レート表からは価格を継承します。

Java


  proposalLineItem.setProposalId(proposalId);
  proposalLineItem.setRateCardId(rateCardId);
  proposalLineItem.setProductId(productId);
  proposalLineItem.setTargeting(targeting);
    

Python


      ...
      'rateCardId': rate_card_id,
      'productId': product_id,
      'proposalId': proposal_id,
      ...
    

PHP


    $proposalLineItem->setProposalId($proposalId);
    $proposalLineItem->setRateCardId($rateCardId);
    $proposalLineItem->setProductId($productId);
    

C#


  proposalLineItem.proposalId = proposalId;
  proposalLineItem.rateCardId = rateCardId;
  proposalLineItem.productId = productId;
  proposalLineItem.targeting = targeting;
    

プロポーザル広告申込情報では、LineItem オブジェクトと同じ方法でターゲティングのフィールドがサポートされます。同様に、InventoryTargeting オブジェクトが少なくとも 1 つ必要です。このケースでは、ネットワークのルート広告ユニットをターゲットに設定することで、ネットワーク掲載のプロポーザル広告申込情報が作成されます。

Java


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

  // Get the root ad unit ID used to target the whole site.
  String rootAdUnitId = networkService.getCurrentNetwork().getEffectiveRootAdUnitId();

  // Create inventory targeting.
  InventoryTargeting inventoryTargeting = new InventoryTargeting();

  // Create ad unit targeting for the root ad unit (i.e. the whole network).
  AdUnitTargeting adUnitTargeting = new AdUnitTargeting();
  adUnitTargeting.setAdUnitId(rootAdUnitId);
  adUnitTargeting.setIncludeDescendants(true);

  inventoryTargeting.setTargetedAdUnits(new AdUnitTargeting[] {adUnitTargeting});

  // Create targeting.
  Targeting targeting = new Targeting();
  targeting.setInventoryTargeting(inventoryTargeting);
    

Python


      ...
      'targeting': {
          'inventoryTargeting': {
              'targetedAdUnits': {
                  'adUnitId': root_ad_unit_id
              }
          }
      },
      ...
    

PHP


    // Create ad unit targeting for the root ad unit (i.e. the whole network).
    $rootAdUnitId =
        $networkService->getCurrentNetwork()->getEffectiveRootAdUnitId();
    $inventoryTargeting = new InventoryTargeting();
    $adUnitTargeting = new AdUnitTargeting();
    $adUnitTargeting->setAdUnitId($rootAdUnitId);
    $adUnitTargeting->setIncludeDescendants(true);
    $inventoryTargeting->setTargetedAdUnits([$adUnitTargeting]);
    $targeting = new Targeting();
    $targeting->setInventoryTargeting($inventoryTargeting);
    $proposalLineItem->setTargeting($targeting);
    

C#


  // Get the root ad unit ID used to target the whole site.
  String rootAdUnitId = networkService.getCurrentNetwork().effectiveRootAdUnitId;

  // Create inventory targeting.
  InventoryTargeting inventoryTargeting = new InventoryTargeting();

  // Create ad unit targeting for the root ad unit (i.e. the whole network).
  AdUnitTargeting adUnitTargeting = new AdUnitTargeting();
  adUnitTargeting.adUnitId = rootAdUnitId;
  adUnitTargeting.includeDescendants = true;

  inventoryTargeting.targetedAdUnits = new AdUnitTargeting[] {adUnitTargeting};

  // Create targeting.
  Targeting targeting = new Targeting();
  targeting.inventoryTargeting = inventoryTargeting;
    

必須の InventoryTargeting オブジェクトを追加したら、次は調査広告申込情報の開始日時と終了日時、Goal オブジェクトに設定した配信情報を指定します。

Java


  // Set the length of the proposal line item to run.
  proposalLineItem.setStartDateTime(DateTimes.toDateTime(Instant.now(), "America/New_York"));
  proposalLineItem.setEndDateTime(
      DateTimes.toDateTime(Instant.now().plus(Duration.standardDays(30L)), "America/New_York"));
  // Set pricing for the proposal line item for 1000 impressions at a CPM of $2
  // for a total value of $2.
  Goal goal = new Goal();
  goal.setUnits(1000L);
  goal.setUnitType(UnitType.IMPRESSIONS);
  proposalLineItem.setGoal(goal);
  proposalLineItem.setNetCost(new Money("USD", 2000000L));
  proposalLineItem.setNetRate(new Money("USD", 2000000L));
  proposalLineItem.setRateType(RateType.CPM);
  // Set delivery specifications for the proposal line item.
  proposalLineItem.setDeliveryRateType(DeliveryRateType.EVENLY);
  proposalLineItem.setCreativeRotationType(CreativeRotationType.OPTIMIZED);
    

Python


      ...
      'startDateTime': start_datetime,
      'endDateTime': end_datetime,
      'goal': {
          'units': '1000',
          'unitType': 'IMPRESSIONS',
      },
      'netCost': {
          'currencyCode': 'USD',
          'microAmount': '2000000'
      },
      'netRate': {
          'currencyCode': 'USD',
          'microAmount': '2000000'
      },
      'rateType': 'CPM',
      'deliveryRateType': 'EVENLY',
      'creativeRotationType': 'OPTIMIZED',
      ...
    

PHP


    // Set the length of the proposal line item to run.
    $proposalLineItem->setStartDateTime(DfpDateTimes::fromDateTime(
        new DateTime('now', new DateTimeZone('America/New_York'))));
    $proposalLineItem->setEndDateTime(DfpDateTimes::fromDateTime(
        new DateTime('+1 month', new DateTimeZone('America/New_York'))));
    // Set pricing for the proposal line item for 1000 impressions at a CPM of
    // $2 for a total value of $2.
    $goal = new Goal();
    $goal->setUnits(1000);
    $goal->setUnitType(UnitType::IMPRESSIONS);
    $proposalLineItem->setGoal($goal);
    $proposalLineItem->setNetCost(new Money('USD', 2000000));
    $proposalLineItem->setNetRate(new Money('USD', 2000000));
    $proposalLineItem->setRateType(RateType::CPM);
    // Set delivery specifications for the proposal line item.
    $proposalLineItem->setDeliveryRateType(DeliveryRateType::EVENLY);
    $proposalLineItem->setCreativeRotationType(CreativeRotationType::OPTIMIZED);
    

C#


  // Set the length of the proposal line item to run.
  proposalLineItem.startDateTime =
      DateTimeUtilities.FromDateTime(System.DateTime.Now.AddDays(7), "America/New_York");
  proposalLineItem.endDateTime =
      DateTimeUtilities.FromDateTime(System.DateTime.Now.AddDays(30), "America/New_York");
  // Set pricing for the proposal line item for 1000 impressions at a CPM of $2
  // for a total value of $2.
  proposalLineItem.goal = new Goal() {unitType = UnitType.IMPRESSIONS, units = 1000L};
  proposalLineItem.netCost = new Money() {currencyCode = "USD", microAmount = 2000000L};
  proposalLineItem.netRate = new Money() {currencyCode = "USD", microAmount = 2000000L};
  proposalLineItem.rateType = RateType.CPM;
  // Set delivery specifications for the proposal line item.
  proposalLineItem.deliveryRateType = DeliveryRateType.EVENLY;
  proposalLineItem.creativeRotationType = CreativeRotationType.OPTIMIZED;
    

プロポーザル広告申込情報では、通常プロポーザルから継承される請求情報をオーバーライドすることもできます。Proposal オブジェクトと同じ BillingCapBillingSourceBillingSchedule のフィールドを設定できます。

Java


  // Set billing specifications for the proposal line item.
  proposalLineItem.setBillingCap(BillingCap.CAPPED_CUMULATIVE);
  proposalLineItem.setBillingSource(BillingSource.THIRD_PARTY_VOLUME);
    

Python


      ...
      'billingCap': 'CAPPED_CUMULATIVE',
      'billingSource': 'THIRD_PARTY_VOLUME',
      ...
    

PHP


    // Set billing specifications for the proposal line item.
    $proposalLineItem->setBillingCap(BillingCap::CAPPED_CUMULATIVE);
    $proposalLineItem->setBillingSource(BillingSource::THIRD_PARTY_VOLUME);
    

C#


  // Set billing specifications for the proposal line item.
  proposalLineItem.billingCap = BillingCap.CAPPED_CUMULATIVE;
  proposalLineItem.billingSource = BillingSource.THIRD_PARTY_VOLUME;
    

これらのフィールドを設定した後、createProposalLineItemsProposalLineItem オブジェクトの配列に対して呼び出すと、新しいプロポーザル広告申込情報が作成されます。

Java


  // Create the proposal line item on the server.
  ProposalLineItem[] proposalLineItems = proposalLineItemService.createProposalLineItems(
      new ProposalLineItem[] {proposalLineItem});
    

Python


  # Add proposal line items.
  proposal_line_items = proposal_line_item_service.createProposalLineItems(
      [proposal_line_item])
    

PHP


    // Create the proposal line items on the server.
    $results =
        $proposalLineItemService->createProposalLineItems([$proposalLineItem]);
    

C#


  // Create the proposal line item on the server.
  ProposalLineItem[] proposalLineItems = proposalLineItemService.createProposalLineItems(
      new ProposalLineItem[] {proposalLineItem});
    

次のステップ

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

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