Çoğu hedefleme türünün toplu hedeflemesi, birden çok AssignedTargetingOption
kaynağının sonucudur. Hedefleme türlerinde, atanan her hedefleme seçeneği farklı bir değer (ör. TARGETING_TYPE_BROWSER
için tek bir tarayıcı) belirtebilir. Kaynağınızın ek bir tarayıcıyı hedeflemesini istiyorsanız ilgili kaynağın altında TARGETING_TYPE_BROWSER
yeni bir atanan hedefleme seçeneği oluşturarak bunu yapabilirsiniz. Benzer şekilde, artık belirli bir tarayıcıyı hedeflemek istemiyorsanız ilgili atanmış hedefleme seçeneğini silebilirsiniz.
Kitle grubu hedeflemesi bu modüler kurala uymuyor. Bunun yerine, kaynağın hedeflemesinde yer alan tüm kitle kimlikleri, TARGETING_TYPE_AUDIENCE_GROUP
türünde tek bir AssignedTargetingOption
aracılığıyla söz konusu kaynağa atanır. Bir kaynağa birden fazla kitle grubuna atanmış hedefleme seçeneği atama girişimleri hata döndürür. Bu sayfada, bu atanmış hedefleme seçeneğini belirleyen mantık ve mevcut kitle grubu hedeflemesinin doğru şekilde nasıl güncelleneceği açıklanmaktadır.
Kitle grubu hedefleme mantığı
Tek kitle grubuna atanmış hedefleme seçeneğinde, reklam yayınlanırken dahil edilecek ve hariç tutulacak kitle kimliği listelerinden oluşan bir AudienceGroupAssignedTargetingOptionsDetails
nesnesi bulunur. Atanan hedefleme seçeneğinin toplu hedeflemesi aşağıdaki mantıksal işlemlerin sonucudur:
- Her türden bağımsız kitle grubu nesneleri, dahil edilen kitleleri UNION temelinde birleştirir.
- Bir
FirstAndThirdPartyAudienceGroup
nesne listesinden oluşanincludedFirstAndThirdAudienceGroups
alanı, kitle gruplarını kavşağa göre birleştirir. - Kullanıcı listelerini veya pozitif olarak hedeflenecek kullanıcı listesi segmentlerini temsil eden, "included" (dahil edildi) ön ekine sahip tüm kitle grubu alanları UNION tarafından birleştirilir.
- Hariç tutulan tüm kitle grubu alanları UNION ile birleştirilir ve sonucun TAMAMLANMASI, kavşak tarafından pozitif hedeflemeyle birleştirilir.
Pratikte bu, aşağıdaki koşulların her ikisi de karşılandığında sonuçta elde edilen AudienceGroupAssignedTargetingOptionsDetails
özelliğinin bir kullanıcıyı hedefleyeceği anlamına gelir:
- Kullanıcı,
includedFirstAndThirdPartyAudienceGroups
listesindeki her kitle grubunda veyaincludedGoogleAudienceGroup
,includedCustomListGroup
ya daincludedCombinedAudienceGroup
en az birine karşılık geliyor. - Kullanıcı,
excludedFirstAndThirdPartyAudienceGroup
veyaexcludedGoogleAudienceGroup
kategorisinde değilse.
Kitle grubu hedeflemesini güncelleyin
Bir satır öğesinin kitle grubu hedeflemesini güncellemek için
mevcut hedefleme seçeneğinin (varsa) silinmesi ve ardından istenen değişiklikleri içeren yeni bir atanmış hedefleme seçeneğinin oluşturulması gerekir. Bu işlem, advertisers.lineItems.bulkEditAssignedTargetingOptions
ile tek bir istekte gerçekleştirilebilir.
Bir satır öğesinin mevcut kitle hedeflemesini, mevcut kitle grubu hedeflemesini alıp ardından toplu düzenleme isteği yaparak nasıl güncelleyeceğinize dair bir örneği burada bulabilirsiniz:
Java
long advertiserId = advertiser-id; long lineItemId = line-item-id List<Long> addedGoogleAudienceIds = Arrays.asList(google-audience-id-to-add,...); // Build Google Audience targeting settings objects to add to audience // targeting. ArrayList<GoogleAudienceTargetingSetting> newGoogleAudienceSettings = new ArrayList<GoogleAudienceTargetingSetting>(); // Convert list of Google Audience IDs into list of settings. for (Long googleAudienceId : addedGoogleAudienceIds) { newGoogleAudienceSettings.add(new GoogleAudienceTargetingSetting() .setGoogleAudienceId(googleAudienceId)); } // Create relevant bulk edit request objects. BulkEditAssignedTargetingOptionsRequest requestContent = new BulkEditAssignedTargetingOptionsRequest(); requestContent.setLineItemIds(Arrays.asList(lineItemId)); AudienceGroupAssignedTargetingOptionDetails updatedAudienceGroupDetails; ArrayList<DeleteAssignedTargetingOptionsRequest> audienceGroupDeleteRequests = new ArrayList<DeleteAssignedTargetingOptionsRequest>(); try { // Retrieve existing audience group targeting. AssignedTargetingOption existingAudienceGroupTargetingOption = service .advertisers() .lineItems() .targetingTypes() .assignedTargetingOptions() .get( advertiserId, lineItemId, "TARGETING_TYPE_AUDIENCE_GROUP", "audienceGroup" ).execute(); // Extract existing audience group targeting details. updatedAudienceGroupDetails = existingAudienceGroupTargetingOption.getAudienceGroupDetails(); // Build and add delete request for existing audience group targeting. ArrayList<String> deleteAudienceGroupAssignedTargetingIds = new ArrayList<String>(); deleteAudienceGroupAssignedTargetingIds.add("audienceGroup"); audienceGroupDeleteRequests .add(new DeleteAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP") .setAssignedTargetingOptionIds( deleteAudienceGroupAssignedTargetingIds ) ); } catch (Exception e) { updatedAudienceGroupDetails = new AudienceGroupAssignedTargetingOptionDetails(); } // Set delete requests in edit request. requestContent.setDeleteRequests(audienceGroupDeleteRequests); // Construct new group of Google Audiences to include in targeting. GoogleAudienceGroup updatedIncludedGoogleAudienceGroup = updatedAudienceGroupDetails.getIncludedGoogleAudienceGroup(); if (updatedIncludedGoogleAudienceGroup != null) { List<GoogleAudienceTargetingSetting> updatedGoogleAudienceSettings = updatedIncludedGoogleAudienceGroup.getSettings(); updatedGoogleAudienceSettings.addAll(newGoogleAudienceSettings); updatedIncludedGoogleAudienceGroup .setSettings(updatedGoogleAudienceSettings); } else { updatedIncludedGoogleAudienceGroup = new GoogleAudienceGroup(); updatedIncludedGoogleAudienceGroup.setSettings(newGoogleAudienceSettings); } // Add new Google Audience group to audience group targeting details. updatedAudienceGroupDetails .setIncludedGoogleAudienceGroup(updatedIncludedGoogleAudienceGroup); // Create new targeting option to assign. AssignedTargetingOption newAudienceGroupTargeting = new AssignedTargetingOption(); newAudienceGroupTargeting .setAudienceGroupDetails(updatedAudienceGroupDetails); // Build audience group targeting create request and add to list of create // requests. ArrayList<AssignedTargetingOption> createAudienceGroupAssignedTargetingOptions = new ArrayList<AssignedTargetingOption>(); createAudienceGroupAssignedTargetingOptions.add(newAudienceGroupTargeting); ArrayList<CreateAssignedTargetingOptionsRequest> targetingCreateRequests = new ArrayList<CreateAssignedTargetingOptionsRequest>(); targetingCreateRequests.add(new CreateAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP") .setAssignedTargetingOptions( createAudienceGroupAssignedTargetingOptions ) ); // Set create requests in edit request. requestContent.setCreateRequests(targetingCreateRequests); // Configure and execute the bulk list request. BulkEditAssignedTargetingOptionsResponse response = service.advertisers().lineItems() .bulkEditAssignedTargetingOptions( advertiserId, requestContent).execute(); // Print the line item IDs that successfully updated. if (response.getUpdatedLineItemIds() != null && !response.getUpdatedLineItemIds().isEmpty()) { System.out.printf( "Targeting configurations for the following line item IDs were updated: %s.\n", Arrays.toString(response.getUpdatedLineItemIds().toArray())); } // Print the line item IDs the failed to update. if (response.getFailedLineItemIds() != null && !response.getFailedLineItemIds().isEmpty()) { System.out.printf( "Targeting configurations for the following line item IDs failed to update: %s.\n", Arrays.toString(response.getFailedLineItemIds().toArray())); // Print errors thrown for failed updates. System.out.println("The failed updates were caused by the following errors:"); for (Status error : response.getErrors()) { System.out.printf("Error Code: %s, Message: %s\n", error.getCode(), error.getMessage()); } }
Python
advertiser_id = advertiser-id line_item_id = line-item-id added_google_audiences = [google-audience-id-to-add,...] # Build Google Audience targeting settings objects to create. new_google_audience_targeting_settings = [] for google_audience_id in added_google_audiences: new_google_audience_targeting_settings.append( {'googleAudienceId': google_audience_id} ) try: # Retrieve any existing line item audience targeting. retrieved_audience_targeting = service.advertisers().lineItems( ).targetingTypes().assignedTargetingOptions().get( advertiserId=advertiser_id, lineItemId=line_item_id, targetingType="TARGETING_TYPE_AUDIENCE_GROUP", assignedTargetingOptionId="audienceGroup" ).execute() except Exception: print("Error retrieving existing audience targeting. Assuming no " "existing audience targeting.") retrieved_audience_targeting = {} updated_audience_group_details = {} # Copy over any existing audience targeting. if 'audienceGroupDetails' in retrieved_audience_targeting: updated_audience_group_details = retrieved_audience_targeting[ 'audienceGroupDetails'] # Append the new Google Audience IDs to any existing positive Google # audience targeting. if 'includedGoogleAudienceGroup' in updated_audience_group_details: updated_audience_group_details[ 'includedGoogleAudienceGroup']['settings'].extend( new_google_audience_targeting_settings) else: updated_audience_group_details['includedGoogleAudienceGroup'] = { 'settings': new_google_audience_targeting_settings } # Build bulk edit request. bulk_edit_request = { 'lineItemIds': [line_item_id], 'deleteRequests': [ { 'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP", 'assignedTargetingOptionIds': [ "audienceGroup" ] } ], 'createRequests': [ { 'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP", 'assignedTargetingOptions': [ {'audienceGroupDetails': updated_audience_group_details} ] } ] } # Update the audience targeting response = service.advertisers().lineItems( ).bulkEditAssignedTargetingOptions( advertiserId=advertiser_id, body=bulk_edit_request ).execute() # Print the line item IDs the successfully updated. if 'updatedLineItemIds' in response: print("Targeting configurations for the following line item IDs were updated: %s" % response['updatedLineItemIds']) # Print the line item IDs the failed to update. if 'failedLineItemIds' in response: print("Targeting configurations for the following line item IDs failed to update: %s" % response['failedLineItemIds']) if 'errors' in response: print("The failed updates were caused by the following errors:") for error in response["errors"]: print("Error code: %s, Message: %s" % (error["code"], error["message"]))
PHP
$advertiserId = advertiser-id; $lineItemId = line-item-id; $addedGoogleAudienceIds = array(google-audience-id-to-add,...); // Convert list of Google Audience IDs into list of Google Audience // settings. $newGoogleAudienceSettings = array(); foreach ($addedGoogleAudienceIds as $googleAudienceId) { $newSetting = new Google_Service_DisplayVideo_GoogleAudienceTargetingSetting(); $newSetting->setGoogleAudienceId($googleAudienceId); $newGoogleAudienceSettings[] = $newSetting; } // Create a bulk edit request. $requestBody = new Google_Service_DisplayVideo_BulkEditAssignedTargetingOptionsRequest(); $requestBody->setLineItemIds([$lineItemId]); $audienceGroupDeleteRequests = array(); try { // Retrieve existing audience group targeting. $existingAudienceGroupTargetingOption = $service ->advertisers_lineItems_targetingTypes_assignedTargetingOptions ->get( $advertiserId, $lineItemId, 'TARGETING_TYPE_AUDIENCE_GROUP', 'audienceGroup' ); // Extract existing audience group targeting details. $updatedAudienceGroupDetails = $existingAudienceGroupTargetingOption ->getAudienceGroupDetails(); // Build and add delete request for existing audience group // targeting. $deleteAudienceGroupAssignedTargetingIds = array(); $deleteAudienceGroupAssignedTargetingIds[] = "audienceGroup"; $audienceGroupDeleteRequest = new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest(); $audienceGroupDeleteRequest ->setTargetingType('TARGETING_TYPE_AUDIENCE_GROUP'); $audienceGroupDeleteRequest ->setAssignedTargetingOptionIds( $deleteAudienceGroupAssignedTargetingIds ); $audienceGroupDeleteRequests[] = $audienceGroupDeleteRequest; } catch (\Exception $e) { $updatedAudienceGroupDetails = new Google_Service_DisplayVideo_AudienceGroupAssignedTargetingOptionDetails(); } // Set delete requests in edit request. $requestBody->setDeleteRequests($audienceGroupDeleteRequests); // Construct new group of Google Audiences to include in targeting. $updatedIncludedGoogleAudienceGroup = $updatedAudienceGroupDetails ->getIncludedGoogleAudienceGroup(); if (!empty($updatedIncludedGoogleAudienceGroup)) { // Get existing settings. $updatedGoogleAudienceSettings = $updatedIncludedGoogleAudienceGroup->getSettings(); // Add new Google Audiences to existing list. $updatedGoogleAudienceSettings = array_merge( $updatedGoogleAudienceSettings, $newGoogleAudienceSettings ); // Set updated Google Audience list. $updatedIncludedGoogleAudienceGroup ->setSettings($updatedGoogleAudienceSettings); } else { // Create new Google Audience group. $updatedIncludedGoogleAudienceGroup = new Google_Service_DisplayVideo_GoogleAudienceGroup(); // Set list of new Google Audiences for targeting. $updatedIncludedGoogleAudienceGroup ->setSettings($newGoogleAudienceSettings); } // Add new Google Audience group to audience group targeting details. $updatedAudienceGroupDetails ->setIncludedGoogleAudienceGroup( $updatedIncludedGoogleAudienceGroup ); // Create new targeting option to assign. $newAudienceGroupTargeting = new Google_Service_DisplayVideo_AssignedTargetingOption(); $newAudienceGroupTargeting ->setAudienceGroupDetails($updatedAudienceGroupDetails); // Build audience group targeting create request and add to list of // create requests. $createAudienceGroupAssignedTargetingOptions = array(); $createAudienceGroupAssignedTargetingOptions[] = $newAudienceGroupTargeting; $createAudienceGroupTargetingRequest = new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest(); $createAudienceGroupTargetingRequest->setTargetingType( "TARGETING_TYPE_AUDIENCE_GROUP" ); $createAudienceGroupTargetingRequest->setAssignedTargetingOptions( $createAudienceGroupAssignedTargetingOptions ); $createRequests[] = $createAudienceGroupTargetingRequest; // Set create requests in edit request. $requestBody->setCreateRequests($createRequests); // Call the API, editing the assigned targeting options for the // identified line item. $response = $service ->advertisers_lineItems ->bulkEditAssignedTargetingOptions( $advertiserId, $requestBody ); // Print the line item IDs the successfully updated. if (!empty($response->getUpdatedLineItemIds())) { printf('Targeting configurations for the following line item IDs were updated:\n'); foreach ($response->getUpdatedLineItemIds() as $id) { printf('%s\n', $id); } } // Print the line item IDs the failed to update. if (!empty($response->getFailedLineItemIds())) { print('Targeting configurations for the following line item IDs failed to update:\n'); foreach ($response->getFailedLineItemIds() as $id) { printf('%s\n', $id); } print('The failed updates were caused by the following errors:\n'); foreach ($response->getErrors() as $error) { printf('Error Code: %s, Message: %s\n', $error->getCode(), $error->getMessage()); } }
Kitle hedeflemeyi optimize edin
Display & Video 360, optimize hedefleme özelliği sayesinde seçili kitlelerinizin erişiminin ötesine geçerek yeni ve alakalı kullanıcılara genişletme olanağı sunar.
Optimize hedefleme, satır öğesi seviyesinde ayarlanır ve LineItem
kaynağındaki targetingExpansion
alanı aracılığıyla yapılandırılabilir.