需求開發委刊項會在 Google 最具影響力的平台上 (包括 YouTube、探索、Gmail 和 Google 多媒體廣告聯播網),放送多種格式的廣告群組和廣告。與其他類型的委刊項一樣,需求開發委刊項也是使用 LineItem 資源進行管理,並根據設定的預算、出價策略和指定目標運作。demandGenSettings 欄位也提供需求開發委刊項專屬設定。
需求開發委刊項有稱為廣告群組的子資源。廣告群組可提供個別委刊項的另一層級控制項。
選擇設定
建立需求開發委刊項前,請先查看並決定相關設定。
需求開發委刊項:
lineItemType必須設為LINE_ITEM_TYPE_DEMAND_GEN。- 必須使用
BiddingStrategy物件的demandGenBid欄位設定bidStrategy。 budget必須在委刊項層級設為固定金額,且無法從父項廣告訂單沿用。demandGenSettings用於設定需求開發委刊項專屬的設定。DemandGenSettings物件的geoLanguageTargetingEnabled欄位會控管是在委刊項層級還是個別廣告群組中,設定地區和語言指定目標。委刊項建立後,這個欄位就無法更新。如要在委刊項層級設定這項指定目標,請將該欄位設為true。- 不應設定「
creativeIds」。素材資源會直接在 AdGroupAd 資源中指派及設定。
需求開發委刊項必須填寫下列欄位,運作方式與其他類型的委刊項相同:
LineItem 資源也有許多可設定的選用欄位。詳情請參閱參考文件。
建立委刊項
如要使用下列設定建立需求開發委刊項,請按照下列步驟操作:
- 沿用航班和 $100 美元的預算。
- 夥伴收益模式為媒體費用總額的 0.1%。
- 這項出價策略會盡可能爭取轉換,同時將平均單次轉換出價維持在 $10 美元。
偏好直接將指定地區和語言指派給委刊項下的廣告群組。
Java
// Provide the ID of the parent advertiser. long advertiserId = advertiser-id // Provide the ID of the parent insertion order. long insertionOrderId = insertion-order-id // Provide the display name of the line item. String displayName = display-name // Provide the Floodlight activity ID to use for conversion tracking. long floodlightActivityId = floodlight-activity-id; // Provide whether the line item will serve EU political ads. String containsEuPoliticalAds = contains-eu-political-ads // Create the line item structure. LineItem lineItem = new LineItem() .setInsertionOrderId(insertionOrderId) .setDisplayName(displayName) .setLineItemType("LINE_ITEM_TYPE_DEMAND_GEN") .setEntityStatus("ENTITY_STATUS_DRAFT") .setContainsEuPoliticalAds(containsEuPoliticalAds); // Create and set the line item flight. LineItemFlight lineItemFlight = new LineItemFlight() .setFlightDateType("LINE_ITEM_FLIGHT_DATE_TYPE_INHERITED"); lineItem.setFlight(lineItemFlight); // Create and set the line item budget. LineItemBudget lineItemBudget = new LineItemBudget() .setBudgetAllocationType("LINE_ITEM_BUDGET_ALLOCATION_TYPE_FIXED") .setMaxAmount(100000000L); lineItem.setBudget(lineItemBudget); // Create and set the pacing setting. Pacing pacing = new Pacing() .setPacingPeriod("PACING_PERIOD_FLIGHT") .setPacingType("PACING_TYPE_EVEN") .setDailyMaxMicros(10_000L); lineItem.setPacing(pacing); // Create and set the partner revenue model. PartnerRevenueModel partnerRevenueModel = new PartnerRevenueModel() .setMarkupType( "PARTNER_REVENUE_MODEL_MARKUP_TYPE_TOTAL_MEDIA_COST_MARKUP") .setMarkupAmount(100L); lineItem.setPartnerRevenueModel(partnerRevenueModel); // Create and set the bidding strategy. BiddingStrategy biddingStrategy = new BiddingStrategy() .setDemandGenBid( new DemandGenBiddingStrategy() .setType("DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_CPA") .setValue(10000000L)); lineItem.setBidStrategy(biddingStrategy); // Create the conversion counting configuration. ConversionCountingConfig conversionCountingConfig = new ConversionCountingConfig() .setPostViewCountPercentageMillis(100000L); // Create and set the configuration for the floodlight activity used in // conversion tracking. TrackingFloodlightActivityConfig trackingFloodlightActivityConfig = new TrackingFloodlightActivityConfig() .setFloodlightActivityId(floodlightActivityId) .setPostClickLookbackWindowDays(90) .setPostViewLookbackWindowDays(90); conversionCountingConfig.setFloodlightActivityConfigs( ImmutableList.of(trackingFloodlightActivityConfig)); // Set the conversion counting configuration. lineItem.setConversionCounting(conversionCountingConfig); // Create and set Demand Gen settings. DemandGenSettings demandGenSettings = new DemandGenSettings().setGeoLanguageTargetingEnabled(false); lineItem.setDemandGenSettings(demandGenSettings); // Configure the create request. LineItems.Create request = service.advertisers().lineItems().create(advertiserId, lineItem); // Create the line item. LineItem response = request.execute(); // Display the new line item. System.out.printf( "Demand Gen line item %s was created.", response.getName());
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the parent insertion order. insertion_order_id = insertion-order-id # Provide the display name of the line item. display_name = display-video # Provide the Floodlight activity ID to use for conversion tracking. floodlight_activity_id = floodlight-activity-id # Provide whether the line item will serve EU political ads. contains_eu_political_ads = contains-eu-political-ads # Create a line item object. line_item_obj = { "insertionOrderId": insertion_order_id, "displayName": display_name, "lineItemType": "LINE_ITEM_TYPE_DEMAND_GEN", "entityStatus": "ENTITY_STATUS_DRAFT", "flight": {"flightDateType": "LINE_ITEM_FLIGHT_DATE_TYPE_INHERITED"}, "budget": { "budgetAllocationType": "LINE_ITEM_BUDGET_ALLOCATION_TYPE_FIXED", "maxAmount": 100000000 }, "pacing": { "pacingPeriod": "PACING_PERIOD_FLIGHT", "pacingType": "PACING_TYPE_EVEN", "dailyMaxMicros": 10000, }, "partnerRevenueModel": { "markupType": ( "PARTNER_REVENUE_MODEL_MARKUP_TYPE_TOTAL_MEDIA_COST_MARKUP" ), "markupAmount": 100, }, "bidStrategy": { "demandGenBid": { "type": "DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_CPA", "value": "10000000" } }, "conversionCounting": { "postViewCountPercentageMillis": "100000", "floodlightActivityConfigs": [ { "floodlightActivityId": floodlight_activity_id, "postClickLookbackWindowDays": 90, "postViewLookbackWindowDays": 90 } ] }, "containsEuPoliticalAds": contains_eu_political_ads, "demandGenSettings": { "geoLanguageTargetingEnabled": False } } # Build and execute request. response = ( service.advertisers() .lineItems() .create(advertiserId=advertiser_id, body=line_item_obj) .execute() ) # Display the new line item. print(f"Demand Gen line Item {response['name']} was created.")
PHP
// Provide the ID of the parent advertiser. $advertiserId = advertiser-id; // Provide the ID of the parent insertion order. $insertionOrderId = insertion-order-id; // Provide the display name of the line item. $displayName = display-name; // Provide the Floodlight activity ID to use for conversion tracking. $floodlightActivityId = floodlight-activity-id; // Provide whether the line item will serve EU political ads. $containsEuPoliticalAds = contains-eu-political-ads; // Create the Demand Gen line item structure. $lineItem = new Google_Service_DisplayVideo_LineItem(); $lineItem->setInsertionOrderId($insertionOrderId); $lineItem->setDisplayName($displayName); $lineItem->setLineItemType('LINE_ITEM_TYPE_DEMAND_GEN'); $lineItem->setEntityStatus('ENTITY_STATUS_DRAFT'); $lineItem->setContainsEuPoliticalAds($containsEuPoliticalAds); // Create and set the line item flight. $flight = new Google_Service_DisplayVideo_LineItemFlight(); $flight->setFlightDateType('LINE_ITEM_FLIGHT_DATE_TYPE_INHERITED'); $lineItem->setFlight($flight); // Create and set the line item budget. $budget = new Google_Service_DisplayVideo_LineItemBudget(); $budget->setBudgetAllocationType( 'LINE_ITEM_BUDGET_ALLOCATION_TYPE_FIXED' ); $budget->setMaxAmount(100000000); $lineItem->setBudget($budget); // Create and set the pacing setting. $pacing = new Google_Service_DisplayVideo_Pacing(); $pacing->setPacingPeriod('PACING_PERIOD_FLIGHT'); $pacing->setPacingType('PACING_TYPE_EVEN'); $pacing->setDailyMaxMicros(10000); $lineItem->setPacing($pacing); // Create and set the partner revenue model. $partnerRevenueModel = new Google_Service_DisplayVideo_PartnerRevenueModel(); $partnerRevenueModel->setMarkupType( 'PARTNER_REVENUE_MODEL_MARKUP_TYPE_TOTAL_MEDIA_COST_MARKUP' ); $partnerRevenueModel->setMarkupAmount(100); $lineItem->setPartnerRevenueModel($partnerRevenueModel); // Create and set the bidding strategy. $demandGenBidStrategy = new Google_Service_DisplayVideo_DemandGenBiddingStrategy(); $demandGenBidStrategy->setType( 'DEMAND_GEN_BIDDING_STRATEGY_TYPE_TARGET_CPA' ); $demandGenBidStrategy->setValue(10000000); $biddingStrategy = new Google_Service_DisplayVideo_BiddingStrategy(); $biddingStrategy->setDemandGenBid($demandGenBidStrategy); $lineItem->setBidStrategy($biddingStrategy); // Create and set the conversion counting config. $conversionCountingConfig = new Google_Service_DisplayVideo_ConversionCountingConfig(); $conversionCountingConfig->setPostViewCountPercentageMillis(100000); $trackingFloodlightActivityConfig = new Google_Service_DisplayVideo_TrackingFloodlightActivityConfig(); $trackingFloodlightActivityConfig->setFloodlightActivityId( $floodlightActivityId ); $trackingFloodlightActivityConfig->setPostClickLookbackWindowDays(90); $trackingFloodlightActivityConfig->setPostViewLookbackWindowDays(90); $conversionCountingConfig->setFloodlightActivityConfigs( array($trackingFloodlightActivityConfig) ); $lineItem->setConversionCounting($conversionCountingConfig); // Create and set the Demand Gen settings. $demandGenSettings = new Google_Service_DisplayVideo_DemandGenSettings(); $demandGenSettings->setGeoLanguageTargetingEnabled(false); $lineItem->setDemandGenSettings($demandGenSettings); // Call the API, creating the line item under the advertiser and // insertion order given. try { $result = $this->service->advertisers_lineItems->create( $advertiserId, $lineItem ); } catch (\Exception $e) { $this->renderError($e); return; } // Display the new line item. printf('<p>Demand Gen line item %s was created.</p>', $result['name']);