オーディエンス ターゲティングを設定する

広告申込情報のすべてのオーディエンス ターゲティングは、1 つのターゲティング オプションで割り当てられます。このターゲティング オプションを更新するには、置き換える必要があります。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>');
}