デマンド ジェネレーション広告の配信は、親パートナー、広告主、広告申込情報、広告グループに割り当てられたターゲティングを使用して制御されます。
理想的なユーザーにリーチしてキャンペーンのパフォーマンスを高めるには、デマンド ジェネレーション広告申込情報と広告グループに割り当てられたターゲティングを使用します。
ターゲティングを割り当てる場所を決める
ターゲティングは、デマンド ジェネレーション広告申込情報と広告グループの両方に割り当てることができます。
ターゲティングを広告申込情報の下で配信されるすべての広告に適用する場合は、デマンド ジェネレーション広告申込情報にターゲティングを割り当てます。それ以外の場合は、個々の広告グループにターゲティングを割り当てます。
デマンド ジェネレーション リソースタイプ別のターゲティングのサポート
各リソースタイプは、特定のタイプのターゲティングをサポートしています。
デマンド ジェネレーション広告申込情報でサポートされているターゲティング タイプは次のとおりです。
TARGETING_TYPE_CARRIER_AND_ISPTARGETING_TYPE_DAY_AND_TIMETARGETING_TYPE_DEVICE_MAKE_MODELTARGETING_TYPE_DEVICE_TYPETARGETING_TYPE_GEO_REGIONTARGETING_TYPE_KEYWORDTARGETING_TYPE_LANGUAGETARGETING_TYPE_NEGATIVE_KEYWORD_LISTTARGETING_TYPE_OPERATING_SYSTEMTARGETING_TYPE_POI
デマンド ジェネレーション広告グループでサポートされているターゲティング タイプは次のとおりです。
TARGETING_TYPE_AGE_RANGETARGETING_TYPE_APPTARGETING_TYPE_APP_CATEGORYTARGETING_TYPE_AUDIENCE_GROUPTARGETING_TYPE_CATEGORYTARGETING_TYPE_GENDERTARGETING_TYPE_GEO_REGIONTARGETING_TYPE_HOUSEHOLD_INCOMETARGETING_TYPE_KEYWORDTARGETING_TYPE_LANGUAGETARGETING_TYPE_PARENTAL_STATUSTARGETING_TYPE_URLTARGETING_TYPE_YOUTUBE_CHANNELTARGETING_TYPE_YOUTUBE_VIDEO
TARGETING_TYPE_GEO_REGION、TARGETING_TYPE_POI、
TARGETING_TYPE_LANGUAGE のサポートは、親 LineItem リソースの
demandGenSettings.geoLanguageTargetingEnabled フィールド
の設定によって異なります。このフィールドが true の場合、地域とターゲット言語は親広告申込情報にのみ割り当てることができます。このフィールドが false の場合、このターゲティングは個々の広告グループにのみ割り当てることができます。
利用可能なターゲティング オプションを見つける
ターゲティングは、そのタイプに基づいて識別されます。ターゲティング オプションを識別するには、次のいずれかの方法を使用します。
- 関連する enum 値を使用します(enum タイプ
AgeRangeやExchangeなど)。 - 関連するサービスを使用して、チャンネルや 地域リストなどのターゲット設定可能なエンティティを取得します。
- ターゲティング オプション ID を
listメソッドとsearchメソッドを使用して、ターゲティング タイプで取得します。
既存のターゲティングを取得する
既存のターゲティングは、広告申込情報または広告グループに追加できるターゲティングを制限します。
デマンド ジェネレーション広告申込情報と広告グループには、継承された TARGETING_TYPE_KEYWORD
ターゲティングのみが表示されます。つまり、広告配信に影響するすべてのターゲティングを完全に把握するには、広告主、広告申込情報、広告グループのターゲティングを取得する必要があります。
一括リスト リクエストを使用して、ターゲティング タイプ全体の既存のターゲティングを取得します。
既存のパートナーと広告主のターゲティングを取得する
継承されたパートナーのターゲティングなど、広告主の既存のターゲティングを取得する方法は次のとおりです。
Java
// Provide the ID of the advertiser. long advertiserId = advertiser-id; // Configure the list request. Advertisers.ListAssignedTargetingOptions request = service.advertisers().listAssignedTargetingOptions(advertiserId); // Create the response and nextPageToken variables. BulkListAdvertiserAssignedTargetingOptionsResponse response; String nextPageToken = null; do { // Create and execute the list request. response = request.setPageToken(nextPageToken).execute(); // Check if response is empty. if (response.isEmpty()) { System.out.printf( "No targeting is currently assigned to advertiser ID '%s'", advertiserId); break; } // Iterate over retrieved assigned targeting options. for (AssignedTargetingOption assignedTargetingOption : response.getAssignedTargetingOptions()) { System.out.printf( "Assigned Targeting Option %s found.%n", assignedTargetingOption.getName()); } // Update the next page token. nextPageToken = response.getNextPageToken(); } while (!Strings.isNullOrEmpty(nextPageToken));
Python
# Provide the ID of the advertiser. advertiser_id = advertiser-id # Create the page token variable. next_page_token = "" while True: # Execute the list request. response = ( service.advertisers() .listAssignedTargetingOptions( advertiserId=advertiser_id, pageToken=next_page_token, ) .execute() ) # If response is not empty, display the retrieved assigned targeting # options. if response: for assigned_targeting_option in response.get( "assignedTargetingOptions", [] ): ato_name = assigned_targeting_option.get( "name", None ) if ato_name: print(f"Assigned Targeting Option {ato_name}.") else: print(f"No targeting is currently assigned to {advertiser_id}.") sys.exit(1) # Update the next page token. # Break out of loop if there is no next page. if "nextPageToken" in response: next_page_token = response["nextPageToken"] else: break
PHP
// Provide the ID of the advertiser. $advertiserId = advertiser-id; $retrievedTargeting = array(); $response = null; $nextPageToken = null; do { $optParams = array( 'pageToken' => $nextPageToken ); // Call the API, getting all the assigned targeting options for the // identified advertiser. try { $response = $this ->service ->advertisers ->listAssignedTargetingOptions( $advertiserId, $optParams ); } catch (\Exception $e) { $this->renderError($e); return; } if (!empty($response->getAssignedTargetingOptions())) { $retrievedTargeting = array_merge( $retrievedTargeting, $response->getAssignedTargetingOptions() ); } // Update the next page token. $nextPageToken = $response->getNextPageToken(); } while ( !empty($response->getAssignedTargetingOptions()) && !empty($nextPageToken) ); // Print information returned by the bulk list request. if (!empty($retrievedTargeting)) { printf( "<p>The following targeting was retrieved for advertiser ID %s:</p><ul>", $advertiserId); foreach ($retrievedTargeting as $assignedTargetingOption) { printf( "<li>Assigned Targeting Option %s found.</li>", $assignedTargetingOption->getName()); } print("</ul>"); } else { printf( "<p>No targeting is currently assigned to advertiser ID %s.</p>", $advertiserId); }
既存の広告申込情報のターゲティングを取得する
広告申込情報に直接割り当てられた既存のターゲティングを取得する方法は次のとおりです。
Java
// Provide the ID of the advertiser. long advertiserId = advertiser-id; // Provide the ID of the line item. long lineItemId = line-item-id; // Configure the list request. LineItems.BulkListAssignedTargetingOptions request = service .advertisers() .lineItems() .bulkListAssignedTargetingOptions(advertiserId) .setLineItemIds(Arrays.asList(lineItemId)); // Create the response and nextPageToken variables. BulkListAssignedTargetingOptionsResponse response; String nextPageToken = null; do { // Create and execute the list request. response = request.setPageToken(nextPageToken).execute(); // Check if response is empty. if (response.isEmpty()) { System.out.printf( "No targeting is currently assigned to '%s'", lineItemId); break; } // Iterate over retrieved assigned targeting options. for (LineItemAssignedTargetingOption liAssignedOption : response.getLineItemAssignedTargetingOptions()) { System.out.printf( "Assigned Targeting Option %s found.%n", liAssignedOption.getAssignedTargetingOption().getName()); } // Update the next page token. nextPageToken = response.getNextPageToken(); } while (!Strings.isNullOrEmpty(nextPageToken));
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the line item. line_item_id = line-item-id # Create the page token variable. next_page_token = "" while True: # Execute the list request. response = ( service.advertisers() .lineItems() .bulkListAssignedTargetingOptions( advertiserId=advertiser_id, lineItemIds=[line_item_id], pageToken=next_page_token, ) .execute() ) # If response is not empty, display the retrieved assigned targeting # options line items. if response: for assigned_option in response.get( "lineItemAssignedTargetingOptions", [] ): ato_name = assigned_option.get("assignedTargetingOption", {}).get( "name", None ) if ato_name: print(f"Assigned Targeting Option {ato_name} found.") else: print(f"No targeting is currently assigned to {line_item_id}.") sys.exit(1) # Update the next page token. # Break out of loop if there is no next page. if "nextPageToken" in response: next_page_token = response["nextPageToken"] else: break
PHP
// Provide the ID of the advertiser. $advertiserId = advertiser-id; // Provide the ID of the line item. $lineItemId = line-item-id; $retrievedLineItemTargeting = array(); $response = null; $nextPageToken = null; do { $optParams = array( 'lineItemIds' => array($lineItemId), 'filter' => $filter, 'pageToken' => $nextPageToken ); // Call the API, getting all the assigned targeting options for the // identified line item. try { $response = $this ->service ->advertisers_lineItems ->bulkListAssignedTargetingOptions( $advertiserId, $optParams ); } catch (\Exception $e) { $this->renderError($e); return; } if (!empty($response->getLineItemAssignedTargetingOptions())) { $retrievedLineItemTargeting = array_merge( $retrievedLineItemTargeting, $response->getLineItemAssignedTargetingOptions() ); } // Update the next page token. $nextPageToken = $response->getNextPageToken(); } while ( !empty($response->getLineItemAssignedTargetingOptions()) && !empty($nextPageToken) ); // Print information returned by the bulk list request. if (!empty($retrievedLineItemTargeting)) { printf( "<p>The following targeting was retrieved for line item ID %s:</p><ul>", $lineItemId); foreach ($retrievedLineItemTargeting as $assignedTargetingOption) { printf( "<li>Assigned Targeting Option %s found.</li>", $assignedTargetingOption->getAssignedTargetingOption()->getName()); } print("</ul>"); } else { printf( "<p>No targeting is currently assigned to line item ID %s.</p>", $lineItemId); }
既存の広告グループのターゲティングを取得する
広告グループに直接割り当てられた既存のターゲティングを取得する方法は次のとおりです。
Java
// Provide the ID of the parent advertiser. long advertiserId = advertiser-id; // Provide the ID of the ad group. long adGroupId = ad-group-id; // Configure the list request. AdGroups.BulkListAssignedTargetingOptions request = service .advertisers() .adGroups() .bulkListAssignedTargetingOptions(advertiserId) .setAdGroupIds(Arrays.asList(adGroupId)); // Create the response and nextPageToken variables. BulkListAdGroupAssignedTargetingOptionsResponse response; String nextPageToken = null; do { // Create and execute the list request. response = request.setPageToken(nextPageToken).execute(); // Check if response is empty. if (response.isEmpty()) { System.out.printf( "No targeting is currently assigned to '%s'", adGroupId); break; } // Iterate over retrieved assigned targeting options. for (AdGroupAssignedTargetingOption adGroupAssignedOption : response.getAdGroupAssignedTargetingOptions()) { System.out.printf( "Assigned Targeting Option %s found.%n", adGroupAssignedOption.getAssignedTargetingOption().getName()); } // Update the next page token. nextPageToken = response.getNextPageToken(); } while (!Strings.isNullOrEmpty(nextPageToken));
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the ad group. ad_group_id = ad-group-id # Create the page token variable. next_page_token = "" while True: # Execute the list request. response = ( service.advertisers() .adGroups() .bulkListAssignedTargetingOptions( advertiserId=advertiser_id, adGroupIds=[ad_group_id], pageToken=next_page_token, ) .execute() ) # If response is not empty, display the retrieved assigned targeting # options line items. if response: for assigned_option in response.get( "adGroupAssignedTargetingOptions", [] ): ato_name = assigned_option.get("assignedTargetingOption", {}).get( "name", None ) if ato_name: print(f"Assigned Targeting Option {ato_name} found.") else: print(f"No targeting is currently assigned to {ad_group_id}.") sys.exit(1) # Update the next page token. # Break out of loop if there is no next page. if "nextPageToken" in response: next_page_token = response["nextPageToken"] else: break
PHP
// Provide the ID of the parent advertiser. $advertiserId = advertiser-id; // Provide the ID of the ad group. $adGroupId = line-item-id; $retrievedAdGroupTargeting = array(); $response = null; $nextPageToken = null; do { $optParams = array( 'adGroupIds' => array($adGroupId), 'pageToken' => $nextPageToken ); // Call the API, getting all the assigned targeting options for the // identified ad group. try { $response = $this ->service ->advertisers_adGroups ->bulkListAssignedTargetingOptions( $advertiserId, $optParams ); } catch (\Exception $e) { $this->renderError($e); return; } if (!empty($response->getAdGroupAssignedTargetingOptions())) { $retrievedAdGroupTargeting = array_merge( $retrievedAdGroupTargeting, $response->getAdGroupAssignedTargetingOptions() ); } // Update the next page token. $nextPageToken = $response->getNextPageToken(); } while ( !empty($response->getAdGroupAssignedTargetingOptions()) && !empty($nextPageToken) ); // Print information returned by the bulk list request. if (!empty($retrievedAdGroupTargeting)) { printf( "<p>The following targeting was retrieved for ad group ID %s:</p><ul>", $adGroupId); foreach ($retrievedAdGroupTargeting as $assignedTargetingOption) { printf( "<li>Assigned Targeting Option %s found.</li>", $assignedTargetingOption->getAssignedTargetingOption()->getName()); } print(""); } else { printf( "<p>No targeting is currently assigned to ad group ID %s.</p>", $adGroupId); }
リソースにターゲティングを割り当てる
広告申込情報と広告グループのターゲティングを更新するには、個別のリクエストを行う必要があります。
広告申込情報のターゲティングを割り当てる
次のターゲティング ロジックを広告申込情報に追加する方法は次のとおりです。
- パソコンでのみ広告を配信する。
キーワード「アイスクリーム」に一致するコンテンツとともに配信される広告枠に入札しない。
Java
// Provide the ID of the parent advertiser. long advertiserId = advertiser-id; // Provide the ID of the line item. long lineItemId = line-item-id; // Build list of targeting delete requests. List<DeleteAssignedTargetingOptionsRequest> deleteRequests = new ArrayList<>(); // Build delete targeting request for device types to remove from targeting // in order to only target computer devices. List<String> deviceTypesToDelete = Arrays.asList( "DEVICE_TYPE_CONNECTED_TV", "DEVICE_TYPE_SMART_PHONE", "DEVICE_TYPE_TABLET"); DeleteAssignedTargetingOptionsRequest deleteDeviceTypeRequest = new DeleteAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_DEVICE_TYPE") .setAssignedTargetingOptionIds(deviceTypesToDelete); deleteRequests.add(deleteDeviceTypeRequest); // Build list of targeting create requests. List<CreateAssignedTargetingOptionsRequest> createRequests = new ArrayList<>(); // Build the "ice cream" negative keyword assigned targeting option. AssignedTargetingOption keywordAssignedTargetingOption = new AssignedTargetingOption() .setKeywordDetails( new KeywordAssignedTargetingOptionDetails() .setKeyword("ice cream") .setNegative(true)); createRequests.add( new CreateAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_KEYWORD") .setAssignedTargetingOptions( Arrays.asList(keywordAssignedTargetingOption))); // Build the bulk edit targeting request. BulkEditAssignedTargetingOptionsRequest bulkEditTargetingRequest = new BulkEditAssignedTargetingOptionsRequest() .setLineItemIds(Arrays.asList(lineItemId)) .setCreateRequests(createRequests) .setDeleteRequests(deleteRequests); // Execute the bulk edit targeting request. BulkEditAssignedTargetingOptionsResponse response = service .advertisers() .adGroups() .bulkEditAssignedTargetingOptions( advertiserId, bulkEditTargetingRequest ) .execute(); // Display API response information. if (response.getUpdatedLineItemIds() != null && !response.getUpdatedLineItemIds().isEmpty()) { System.out.printf( "Targeting configurations for %s were successfully updated.%n", response.getUpdatedLineItemIds().get(0)); } if (response.getFailedLineItemIds() != null && !response.getFailedLineItemIds().isEmpty()) { System.out.printf( "Targeting configurations for %s failed to update.%n", response.getFailedLineItemIds().get(0)); } if (response.getErrors() != null && !response.getErrors().isEmpty()) { System.out.println("The failed updates were caused by the following errors:"); for (Status error : response.getErrors()) { System.out.printf("Code %s: %s%n", error.getCode(), error.getMessage()); } } else { System.out.println("No successful or failed updates were reported."); }
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the line item. line_item_id = line-item-id # Build the "ice cream" negative keyword assigned targeting option. keyword_assigned_targeting_option = { "keywordDetails": {"keyword": "ice cream", "negative": True} } # Build the delete request for device type targeting to remove all device # types to only target computers. device_type_delete_request = { "targetingType": "TARGETING_TYPE_DEVICE_TYPE", "assignedTargetingOptionIds": [ "DEVICE_TYPE_SMART_PHONE", "DEVICE_TYPE_CONNECTED_TV", "DEVICE_TYPE_TABLET" ], } # Create a bulk edit request. bulk_edit_targeting_request = { "lineItemIds": [line_item_id], "createRequests": [ { "targetingType": "TARGETING_TYPE_KEYWORD", "assignedTargetingOptions": [ keyword_assigned_targeting_option ], } ], "deleteRequests": [ device_type_delete_request ] } # Build and execute request. response = ( service.advertisers() .lineItems() .bulkEditAssignedTargetingOptions( advertiserId=advertiser_id, body=bulk_edit_targeting_request ) .execute() ) # Print the request results. if ( "updatedLineItemIds" in response and len(response["updatedLineItemIds"]) != 0 ): print( f'Targeting configurations for {response["updatedLineItemIds"][0]} ' "were successfully updated." ) elif ( "failedLineItemIds" in response and len(response["failedLineItemIds"]) != 0 ): print( f'Targeting configurations for {response["failedLineItemIds"][0]} ' "failed to update." ) if "errors" in response and len(response["errors"]) != 0: print("The failed updates were caused by the following errors:") for error in response["errors"]: print(f'Code {error["code"]}: {error["message"]}') else: print("No successful or failed updates were reported.")
PHP
// Provide the ID of the parent advertiser. $advertiserId = advertiser-id; // Provide the ID of the line item. $lineItemId = line-item-id; $deleteRequests = array(); // Build request to delete all other existing device type targeting // options to only target computer devices. $deleteDeviceTypeAssignedTargetingOption = new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest(); $deleteDeviceTypeAssignedTargetingOption->setTargetingType( 'TARGETING_TYPE_DEVICE_TYPE' ); $deleteDeviceTypeAssignedTargetingOption->setAssignedTargetingOptionIds( array( 'DEVICE_TYPE_CONNECTED_TV', 'DEVICE_TYPE_SMART_PHONE', 'DEVICE_TYPE_TABLET' ) ); $deleteRequests[] = $deleteDeviceTypeAssignedTargetingOption; $createRequests = array(); // Build the "ice cream" negative keyword assigned targeting option. $keywordDetails = new Google_Service_DisplayVideo_KeywordAssignedTargetingOptionDetails(); $keywordDetails->setKeyword('ice cream'); $keywordDetails->setNegative(true); $keywordAssignedTargetingOption = new Google_Service_DisplayVideo_AssignedTargetingOption(); $keywordAssignedTargetingOption->setKeywordDetails($keywordDetails); $createKeywordAssignedTargetingOption = new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest(); $createKeywordAssignedTargetingOption->setTargetingType( 'TARGETING_TYPE_KEYWORD' ); $createKeywordAssignedTargetingOption->setAssignedTargetingOptions( array($keywordAssignedTargetingOption) ); $createRequests[] = $createKeywordAssignedTargetingOption; $body = new Google_Service_DisplayVideo_BulkEditAssignedTargetingOptionsRequest(); $body->setLineItemIds(array($lineItemId)); $body->setCreateRequests($createRequests); $body->setDeleteRequests($deleteRequests); // Call the API, editing the assigned targeting options for the // identified line item. try { $response = $this ->service ->advertisers_lineItems ->bulkEditAssignedTargetingOptions( $advertiserId, $body ); } catch (\Exception $e) { $this->renderError($e); return; } // Print information returned by the bulk edit request. // List updated line item IDs. if (empty($response->getUpdatedLineItemIds())) { print '<p>No line items were successfully updated.</p>'; } else { print '<p>The targeting of the following line item IDs were ' . 'updated:</p><ul>'; foreach ($response->getUpdatedLineItemIds() as $id) { printf('<li>%s</li>',$id); } print '</ul>'; } // List line item IDs that failed to update. if (empty($response->getFailedLineItemIds())) { print '<p>No line items failed to update.</p>'; } else { print 'The targeting of the following line item IDs failed to '
. 'update:</p><ul>'; foreach ($response->getFailedLineItemIds() as $id) { printf('<li>%s</li>',$id); } print '</ul>'; } // List the errors thrown when the targeting was updated. if (empty($response->getErrors())) { print '<p>No errors were thrown.</p>'; } else { print '<p>The following errors were thrown when attempting to ' . 'update the targeting:</p><ul>'; foreach ($response->getErrors() as $error) { printf( '<li>%s: %s</li>', $error->getCode(), $error->getMessage() ); } print '</ul>'; }
広告グループのターゲティングを割り当てる
次のターゲティング ロジックを広告グループに追加する方法は次のとおりです。
- 保護者にのみ配信する。
指定した YouTube チャンネルに対して配信しない。
Java
// Provide the ID of the parent advertiser. long advertiserId = advertiser-id; // Provide the ID of the ad group. long adGroupId = ad-group-id; // Provide the YouTube channel ID to negatively target. String youtubeChannelId = youtube-channel-id; // Build list of targeting create requests. List<CreateAssignedTargetingOptionsRequest> createRequests = new ArrayList<>(); // Build YouTube channel assigned targeting option. AssignedTargetingOption youtubeChannelAssignedTargetingOption = new AssignedTargetingOption() .setYoutubeChannelDetails( new YoutubeChannelAssignedTargetingOptionDetails() .setChannelId(youtubeChannelId) .setNegative(true)); createRequests.add( new CreateAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_YOUTUBE_CHANNEL") .setAssignedTargetingOptions( Arrays.asList(youtubeChannelAssignedTargetingOption))); // Build parental status assigned targeting option. AssignedTargetingOption parentalStatusAssignedTargetingOption = new AssignedTargetingOption() .setParentalStatusDetails( new ParentalStatusAssignedTargetingOptionDetails() .setParentalStatus("PARENTAL_STATUS_PARENT")); createRequests.add( new CreateAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_PARENTAL_STATUS") .setAssignedTargetingOptions( Arrays.asList(parentalStatusAssignedTargetingOption))); // Create a bulk edit request. BulkEditAdGroupAssignedTargetingOptionsRequest bulkEditTargetingRequest = new BulkEditAdGroupAssignedTargetingOptionsRequest() .setAdGroupIds(Arrays.asList(adGroupId)) .setCreateRequests(createRequests); // Configure the list request. BulkEditAdGroupAssignedTargetingOptionsResponse response = service .advertisers() .adGroups() .bulkEditAssignedTargetingOptions( advertiserId, bulkEditTargetingRequest ) .execute(); // Display API response information. if (response.getUpdatedAdGroupIds() != null && !response.getUpdatedAdGroupIds().isEmpty()) { System.out.printf( "Targeting configurations for %s were successfully updated.%n", response.getUpdatedAdGroupIds().get(0)); } if (response.getFailedAdGroupIds() != null && !response.getFailedAdGroupIds().isEmpty()) { System.out.printf( "Targeting configurations for %s failed to update.%n", response.getFailedAdGroupIds().get(0)); } if (response.getErrors() != null && !response.getErrors().isEmpty()) { System.out.println("The failed updates were caused by the following errors:"); for (Status error : response.getErrors()) { System.out.printf("Code %s: %s%n", error.getCode(), error.getMessage()); } } else { System.out.println("No successful or failed updates were reported."); }
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the ad group. ad_group_id = ad-group-id # Provide the YouTube channel ID to negatively target. yt_channel_id = youtube-channel-id # Build the assigned targeting option to negatively target the given YouTube # channel. youtube_channel_assigned_targeting_options = [ { "youtubeChannelDetails": { "channelId": yt_channel_id, "negative": True } }, ] # Build the assigned targeting options to target only parents. parental_status_assigned_targeting_options = [ { "parentalStatusDetails": { "parentalStatus": "PARENTAL_STATUS_PARENT" } }, ] # Create a bulk edit request. bulk_edit_targeting_request = { "adGroupIds": [ad_group_id], "createRequests": [ { "targetingType": "TARGETING_TYPE_YOUTUBE_CHANNEL", "assignedTargetingOptions": ( youtube_channel_assigned_targeting_options ) }, { "targetingType": "TARGETING_TYPE_PARENTAL_STATUS", "assignedTargetingOptions": ( parental_status_assigned_targeting_options ), } ] } # Build and execute request. response = ( service.advertisers() .adGroups() .bulkEditAssignedTargetingOptions( advertiserId=advertiser_id, body=bulk_edit_targeting_request ) .execute() ) # Print the request results. if ( "updatedAdGroupIds" in response and len(response["updatedAdGroupIds"]) != 0 ): print( f'Targeting configurations for {response["updatedAdGroupIds"][0]} ' "were successfully updated." ) elif ( "failedAdGroupIds" in response and len(response["failedAdGroupIds"]) != 0 ): print( f'Targeting configurations for {response["failedAdGroupIds"][0]} ' "failed to update." ) if "errors" in response and len(response["errors"]) != 0: print("The failed updates were caused by the following errors:") for error in response["errors"]: print(f'Code {error["code"]}: {error["message"]}') else: print("No successful or failed updates were reported.")
PHP
// Provide the ID of the parent advertiser. $advertiserId = advertiser-id; // Provide the ID of the ad group. $adGroupId = ad-group-id; // Provide the YouTube channel ID to negatively target. $youtubeChannelId = youtube-channel-id; $createRequests = array(); // Build YouTube channel assigned targeting option and add to create // requests. $youtubeChannelDetails = new Google_Service_DisplayVideo_YoutubeChannelAssignedTargetingOptionDetails(); $youtubeChannelDetails->setChannelId($youtubeChannelId); $youtubeChannelDetails->setNegative(true); $youtubeChannelAssignedTargetingOption = new Google_Service_DisplayVideo_AssignedTargetingOption(); $youtubeChannelAssignedTargetingOption->setYoutubeChannelDetails( $youtubeChannelDetails ); $createYoutubeChannelAssignedTargetingOption = new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest(); $createYoutubeChannelAssignedTargetingOption->setTargetingType( 'TARGETING_TYPE_YOUTUBE_CHANNEL' ); $createYoutubeChannelAssignedTargetingOption ->setAssignedTargetingOptions( array($youtubeChannelAssignedTargetingOption) ); $createRequests[] = $createYoutubeChannelAssignedTargetingOption; // Build parental status assigned targeting option and add to create // requests. $parentalStatusDetails = new Google_Service_DisplayVideo_ParentalStatusAssignedTargetingOptionDetails(); $parentalStatusDetails->setParentalStatus('PARENTAL_STATUS_PARENT'); $parentalStatusAssignedTargetingOption = new Google_Service_DisplayVideo_AssignedTargetingOption(); $parentalStatusAssignedTargetingOption->setParentalStatusDetails( $parentalStatusDetails ); $createParentalStatusAssignedTargetingOption = new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest(); $createParentalStatusAssignedTargetingOption->setTargetingType( 'TARGETING_TYPE_PARENTAL_STATUS' ); $createParentalStatusAssignedTargetingOption ->setAssignedTargetingOptions( array($parentalStatusAssignedTargetingOption) ); $createRequests[] = $createParentalStatusAssignedTargetingOption; $body = new Google_Service_DisplayVideo_BulkEditAdGroupAssignedTargetingOptionsRequest(); $body->setAdGroupIds(array($adGroupId)); $body->setCreateRequests($createRequests); // Call the API, editing the assigned targeting options for the // identified ad group. try { $response = $this ->service ->advertisers_adGroups ->bulkEditAssignedTargetingOptions( $advertiserId, $body ); } catch (\Exception $e) { $this->renderError($e); return; } // Print information returned by the bulk edit request. // List updated ad group IDs. if (empty($response->getUpdatedAdGroupIds())) { print '<p>No ad groups were successfully updated.</p>'; } else { print '<p>The targeting of the following ad group IDs were ' . 'updated:</p><ul>'; foreach ($response->getUpdatedAdGroupIds() as $id) { printf('<li>%s</li>',$id); } print '</ul>'; } // List ad group IDs that failed to update. if (empty($response->getFailedAdGroupIds())) { print '<p>No ad groups failed to update.</p>'; } else { print '<p>The targeting of the following ad group IDs failed to ' . 'update:</p><ul>'; foreach ($response->getFailedAdGroupIds() as $id) { printf('<li>%s</li>',$id); } print '</ul>'; } // List the errors thrown when the targeting was updated. if (empty($response->getErrors())) { print '<p>No errors were thrown.</p>'; } else { print '<p>The following errors were thrown when attempting to ' . 'update the targeting:</p><ul>'; foreach ($response->getErrors() as $error) { printf( '<li>%s: %s</li>', $error->getCode(), $error->getMessage() ); } print '</ul>'; }