委刊項的所有目標對象指定目標,都會指派給單一指定目標選項。
如要更新這項指定目標選項,必須加以取代。使用 list 方法擷取現有的指定目標選項。使用 bulkEditAssignedTargetingOptions 方法取代指定目標選項。
如要設定委刊項排除目標顧客比對目標對象,請按照下列步驟操作:
Java
// Provide the ID of the parent advertiser of the line item. long advertiserId = advertiser-id; // Provide the ID of the line item. long lineItemId = line-item-id; // Provide the ID of the audience to exclude in targeting. long audienceId = audience-id; AudienceGroupAssignedTargetingOptionDetails audienceGroupDetails; List<CreateAssignedTargetingOptionsRequest> createRequests = new ArrayList<>(); List<DeleteAssignedTargetingOptionsRequest> deleteRequests = new ArrayList<>(); // Retrieve any existing audience targeting details try { AssignedTargetingOption audienceAssignedTargetingOption = service .advertisers() .lineItems() .targetingTypes() .assignedTargetingOptions() .get(advertiserId, lineItemId, "TARGETING_TYPE_AUDIENCE_GROUP", "audienceGroup") .execute(); audienceGroupDetails = audienceAssignedTargetingOption.getAudienceGroupDetails(); deleteRequests.add( new DeleteAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP") .setAssignedTargetingOptionIds(Arrays.asList("audienceGroup"))); } catch (Exception e) { audienceGroupDetails = new AudienceGroupAssignedTargetingOptionDetails(); } // Create the new excluded audience setting. FirstPartyAndPartnerAudienceTargetingSetting newExcludedAudienceSetting = new FirstPartyAndPartnerAudienceTargetingSetting() .setFirstPartyAndPartnerAudienceId(audienceId) .setRecency("RECENCY_NO_LIMIT"); List<FirstPartyAndPartnerAudienceTargetingSetting> excludedFirstPartyAudiences = new ArrayList<>(); if (audienceGroupDetails.getExcludedFirstPartyAndPartnerAudienceGroup() != null) { excludedFirstPartyAudiences = audienceGroupDetails.getExcludedFirstPartyAndPartnerAudienceGroup().getSettings(); } excludedFirstPartyAudiences.add(newExcludedAudienceSetting); audienceGroupDetails.setExcludedFirstPartyAndPartnerAudienceGroup( new FirstPartyAndPartnerAudienceGroup().setSettings(excludedFirstPartyAudiences)); // Build audience group assigned targeting option. createRequests.add( new CreateAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP") .setAssignedTargetingOptions( Arrays.asList( new AssignedTargetingOption().setAudienceGroupDetails(audienceGroupDetails)))); // Create a bulk edit request. BulkEditAssignedTargetingOptionsRequest bulkEditTargetingRequest = new BulkEditAssignedTargetingOptionsRequest() .setLineItemIds(Arrays.asList(lineItemId)) .setCreateRequests(createRequests) .setDeleteRequests(deleteRequests); // Configure the list request. BulkEditAssignedTargetingOptionsResponse response = service .advertisers() .lineItems() .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 of the line item. advertiser_id = advertiser-id # Provide the ID of the line item. line_item_id = line-item-id # Provide the ID of the audience to exclude in targeting. audience_id = audience-id # Attempt to retrieve any existing line item audience targeting. audience_group_targeting_details = {} existing_audience_assigned_option_id = [] try: retrieved_audience_targeting = ( service.advertisers() .lineItems() .targetingTypes() .assignedTargetingOptions() .get( advertiserId=advertiser_id, lineItemId=line_item_id, targetingType="TARGETING_TYPE_AUDIENCE_GROUP", assignedTargetingOptionId="audienceGroup", ) .execute() ) audience_group_targeting_details = retrieved_audience_targeting[ "audienceGroupDetails" ] existing_audience_assigned_option_id.append("audienceGroup") except Exception: print( f"Error retrieving audience targeting for line item ID {line_item_id}. " "Assuming no existing audience targeting." ) # Retrieve the list of existing excluded first- and third-party audiences. excluded_group = {"settings": []} if ( "excludedFirstPartyAndPartnerAudienceGroup" in audience_group_targeting_details ): excluded_group = audience_group_targeting_details[ "excludedFirstPartyAndPartnerAudienceGroup" ] # Add the audience to the excluded group. excluded_group["settings"].append( {"firstPartyAndPartnerAudienceId": audience_id} ) # Add updated excluded group to audience group targeting details. audience_group_targeting_details = { "excludedFirstPartyAndPartnerAudienceGroup": excluded_group } # Build the bulk edit request. bulk_edit_request = { "lineItemIds": [line_item_id], "deleteRequests": [{ "targetingType": "TARGETING_TYPE_AUDIENCE_GROUP", "assignedTargetingOptionIds": existing_audience_assigned_option_id, }], "createRequests": [{ "targetingType": "TARGETING_TYPE_AUDIENCE_GROUP", "assignedTargetingOptions": [ {"audienceGroupDetails": audience_group_targeting_details} ], }], } # Update the audience targeting. bulk_edit_response = ( service.advertisers() .lineItems() .bulkEditAssignedTargetingOptions( advertiserId=advertiser_id, body=bulk_edit_request ) .execute() ) # Print the line item IDs that were successfully updated. if "updatedLineItemIds" in bulk_edit_response: print( "Audience targeting was updated for the following line item IDs: " f'{bulk_edit_response["updatedLineItemIds"]}.' ) # Print the line item IDs that failed to update. if "failedLineItemIds" in bulk_edit_response: print( "Audience targeting failed to update for the following line item IDs: " f'{bulk_edit_response["failedLineItemIds"]}.' ) if "errors" in bulk_edit_response: print("The failures were caused by the following errors:") for error in bulk_edit_response["errors"]: print(f'Error code: {error["code"]}, Message: {error["message"]}')
PHP
// Provide the ID of the parent advertiser of the line item. $advertiserId = advertiser-id; // Provide the ID of the line item. $lineItemId = line-item-id; // Provide the ID of the audience to exclude in targeting. $audienceId = audience-id; // Build new setting excluding the provided audience in targeting. $newExcludedFirstPartyAudienceSetting = new Google_Service_DisplayVideo_FirstPartyAndPartnerAudienceTargetingSetting(); $newExcludedFirstPartyAudienceSetting->setFirstPartyAndPartnerAudienceId($audienceId); $newExcludedFirstPartyAudienceSetting->setRecency("RECENCY_NO_LIMIT"); // Build initial request object for bulk editing targeting. $bulkEditRequest = new Google_Service_DisplayVideo_BulkEditAssignedTargetingOptionsRequest(); $bulkEditRequest->setLineItemIds(array($lineItemId)); // Call the API, retrieving the existing audience targeting for the // line item. try { $existingAudienceGroupTargetingOption = $this ->service ->advertisers_lineItems_targetingTypes_assignedTargetingOptions ->get( $advertiserId, $lineItemId, "TARGETING_TYPE_AUDIENCE_GROUP", "audienceGroup" ); $updatedAudienceGroupDetails = $existingAudienceGroupTargetingOption->getAudienceGroupDetails(); // Update bulk edit request to delete existing audience targeting. $deleteAudienceGroupAssignedTargetingIds = array("audienceGroup"); $audienceTargetingDeleteRequest = new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest(); $audienceTargetingDeleteRequest->setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP"); $audienceTargetingDeleteRequest->setAssignedTargetingOptionIds($deleteAudienceGroupAssignedTargetingIds); $bulkEditRequest->setDeleteRequests(array($audienceTargetingDeleteRequest)); } catch (\Exception $e) { // No existing audience targeting was found. // Create an empty Audience Group targeting details resource. $updatedAudienceGroupDetails = new Google_Service_DisplayVideo_AudienceGroupAssignedTargetingOptionDetails(); } // Update excluded audience details to include provided audience. $updatedExcludedFirstPartyAudienceGroup = new Google_Service_DisplayVideo_FirstPartyAndPartnerAudienceGroup(); if (!empty($updatedAudienceGroupDetails->getExcludedFirstPartyAndPartnerAudienceGroup())) { $excludedSettings = $updatedAudienceGroupDetails->getExcludedFirstPartyAndPartnerAudienceGroup()->getSettings(); $excludedSettings[] = $newExcludedFirstPartyAudienceSetting; $updatedExcludedFirstPartyAudienceGroup->setSettings($excludedSettings); } else { $updatedExcludedFirstPartyAudienceGroup->setSettings(array($newExcludedFirstPartyAudienceSetting)); } $updatedAudienceGroupDetails->setExcludedFirstPartyAndPartnerAudienceGroup($updatedExcludedFirstPartyAudienceGroup); // Build new assigned targeting option and add to the bulk edit request. $newAudienceAssignedTargetingOption = new Google_Service_DisplayVideo_AssignedTargetingOption(); $newAudienceAssignedTargetingOption->setAudienceGroupDetails($updatedAudienceGroupDetails); $createAudienceTargetingRequest = new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest(); $createAudienceTargetingRequest->setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP"); $createAudienceTargetingRequest->setAssignedTargetingOptions(array($newAudienceAssignedTargetingOption)); $bulkEditRequest->setCreateRequests(array($createAudienceTargetingRequest)); // Call the API, replacing the audience assigned targeting option for // line item. try { $response = $this ->service ->advertisers_lineItems ->bulkEditAssignedTargetingOptions( $advertiserId, $bulkEditRequest ); } 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 '<p>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>'); }