Die Dienste Targeting-Optionen, Zugewiesene Targeting-Optionen und Werbebuchungen werden gemeinsam verwendet, um das Targeting für Werbebuchungen in der Display & Video 360 API festzulegen. Auf dieser Seite wird beschrieben, wie Sie verfügbare Ausrichtungsoptionen finden, Ausrichtungsoptionen Werbebuchungen zuweisen und Bulk-Vorgänge für Werbebuchungen ausführen, um zugewiesene Ausrichtungsoptionen aufzulisten und zu bearbeiten. Außerdem finden Sie hier Beispiele dazu.
Verfügbare Targeting-Optionen finden
Bei Targeting-Optionen werden entweder vom Nutzer angegebene Variablen, vorhandene ansprechbare Entitäten oder vordefinierte Optionen verwendet, um die gewünschte Zielgruppe zu definieren. Vorhandene Optionen werden je nach Targeting-Typ entweder mithilfe von Enum-Werten oder Targeting-Options-IDs identifiziert. Entitäten, auf die eine Ausrichtung möglich ist, werden anhand ihrer Entitäts-IDs identifiziert. IDs für Ausrichtungsoptionen und Entitäts-IDs finden Sie in der Display & Video 360 API.
Festgelegte Enum-Werte verwenden
Targeting-Optionen für die folgenden Targeting-Typen werden mithilfe bestimmter Enum-Typen zugewiesen:
TargetingType |
Enum |
---|---|
TARGETING_TYPE_AGE_RANGE |
AgeRange |
TARGETING_TYPE_CONTENT_INSTREAM_POSITION |
ContentInstreamPosition |
TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION |
ContentOutstreamPosition |
TARGETING_TYPE_DEVICE_TYPE |
DeviceType |
TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION |
ContentRatingTier |
TARGETING_TYPE_ENVIRONMENT |
Environment |
TARGETING_TYPE_EXCHANGE |
Exchange |
TARGETING_TYPE_GENDER |
Gender |
TARGETING_TYPE_HOUSEHOLD_INCOME |
HouseholdIncome |
TARGETING_TYPE_NATIVE_CONTENT_POSITION |
NativeContentPosition |
TARGETING_TYPE_OMID |
Omid |
TARGETING_TYPE_PARENTAL_STATUS |
ParentalStatus |
TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION |
SensitiveCategory |
TARGETING_TYPE_VIDEO_PLAYER_SIZE |
VideoPlayerSize |
TARGETING_TYPE_VIEWABILITY |
Viewability |
Mit einer Stringversion des entsprechenden Enum-Werts können vorhandene AssignedTargetingOption
-Ressourcen dieser Targeting-Typen identifiziert werden. Sie ist im Feld assignedTargetingOptionIdAlias
verfügbar. Sie können diesen Aliaswert anstelle von assignedTargetingOptionId
verwenden, wenn Sie zugewiesene Targeting-Optionen abrufen oder löschen.
IDs für Ausrichtungsoptionen abrufen
Targeting-Typen, für die bereits vorhandene Optionen verwendet werden, werden mithilfe der entsprechenden IDs für Targeting-Optionen zugewiesen.
So gibt es beispielsweise eine begrenzte Anzahl von Positionen auf dem Bildschirm, auf die mit dem Ausrichtungstyp TARGETING_TYPE_ON_SCREEN_POSITION
ausgerichtet werden kann. Jede dieser Positionen hat eine entsprechende Targeting-Option-ID.
Diese IDs für Ausrichtungsoptionen können über den Dienst „Ausrichtungsoptionen“ abgerufen werden. Je nach Targeting-Typ erfolgt der Abruf auf eine von zwei Arten:
- Einzelner Abruf oder vollständige Liste: Die Optionen für die meisten Ausrichtungstypen können mit den Methoden
get
undlist
abgerufen werden. Verwenden SietargetingTypes.targetingOptions.get
, um die Details einer Ausrichtungsoption abzurufen, die durch einen Targeting-Typ und eine Targeting-Option-ID gekennzeichnet ist. MittargetingTypes.targetingOptions.list
können Sie alle verfügbaren Targeting-Optionen eines bestimmten Targeting-Typs auflisten. - Suche: Optionen für die geografische Ausrichtung (
TARGETING_TYPE_GEO_REGION
,TARGETING_TYPE_POI
undTARGETING_TYPE_BUSINESS_CHAIN
) müssen mit der Methodesearch
abgerufen werden. MittargetingTypes.targetingOptions.search
können Sie Targeting-Optionen eines bestimmten Typs abrufen, die mit bestimmten Suchstrings übereinstimmen.
Hier ein Beispiel für die Abrufung einer Liste mit möglichen Ausrichtungsoptionen für den Ausrichtungstyp TARGETING_TYPE_BROWSER
:
Java
// Configure the list request. TargetingOptions.List request = service .targetingTypes() .targetingOptions() .list("TARGETING_TYPE_BROWSER") .setAdvertiserId(advertiser-id); // Create the response and nextPageToken variables. ListTargetingOptionsResponse response; String nextPageToken = null; do { // Create and execute the list request. response = request.setPageToken(nextPageToken).execute(); // Check if the response is empty. if (response.isEmpty()) { System.out.print("List request returned no Targeting Options"); break; } // Iterate over retrieved targeting options. for (TargetingOption option : response.getTargetingOptions()) { System.out.printf( "Targeting Option ID: %s, Browser Display Name: '%s'\n", option.getTargetingOptionId(), option.getBrowserDetails().getDisplayName()); } // Update the next page token. nextPageToken = response.getNextPageToken(); } while (!Strings.isNullOrEmpty(nextPageToken));
Python
# Create the page token variable. next_page_token = "" while True: # Request the targeting options list. response = service.targetingTypes() \ .targetingOptions().list( advertiserId=advertiser-id, targetingType="TARGETING_TYPE_BROWSER", pageToken=next_page_token ).execute() # Check if response is empty. if not response: print("List request returned no Targeting Options") break # Iterate over retrieved targeting options. for option in response['targetingOptions']: print("Targeting Option ID: %s, Browser Display Name: %s" % (option['targetingOptionId'], option['browserDetails']['displayName'])) # Break out of loop if there is no next page. if 'nextPageToken' not in response: break # Update the next page token. next_page_token = response['nextPageToken']
PHP
// Create the page token variable. $nextPageToken = null; do { // Build the query parameters object for the request. $optParams = array( 'advertiserId' => advertiser-id, 'pageToken' => $nextPageToken ); // Call the API, getting the browser targeting options for the // identified advertiser. $response = $this ->service ->targetingTypes_targetingOptions ->listTargetingTypesTargetingOptions( 'TARGETING_TYPE_BROWSER', $optParams ); // Print the resulting targeting options. if (!empty($response->getTargetingOptions())) { foreach ($response->getTargetingOptions() as $option) { printf( 'Targeting Option ID: %s, Browser Display Name: %s\n', $option['targetingOptionId'], $option['browserDetails']['displayName'] ); } } else { print('No targeting options returned\n'); } // Update the next page token. $nextPageToken = $response->getNextPageToken(); } while ( !empty($response->getTargetingOptions()) && $nextPageToken );
Entitäten auflisten, auf die eine Ausrichtung möglich ist
Wenn Sie eine Werbebuchung auf eine vorhandene, anvischbare Entität ausrichten möchten, benötigen Sie die ID dieser Entität. Zielbare Entitäten wie Channels, kombinierte Zielgruppen und Inventarquellengruppen können über ihre eigenen Dienste in der Display & Video 360 API abgerufen werden.
Für jeden Dienst gibt es eigene get
- und list
-Methoden. Mit der Methode get
können Sie prüfen, ob eine Entität für einen bestimmten Werbetreibenden verfügbar ist. Mit der list
-Methode können Sie alle Entitäten dieses Ressourcentyps ermitteln, die für einen bestimmten Werbetreibenden verfügbar sind und daher zum Zuweisen von Targeting für eine Werbebuchung unter diesem Werbetreibenden verwendet werden können.
Ein Teil der anvisierbaren Entitäten kann auch über die API verwaltet werden. Dazu werden die Methoden create
und patch
im entsprechenden Dienst sowie Dienste für die einzelnen in den Entitäten aufgeführten Werte verwendet, z. B. Inventarquellen, auszuschließende Keywords und Standorte.
IDs für POI-Targeting-Optionen erstellen
Die Targeting-Optionen für benannte POIs unter TARGETING_TYPE_POI
können mit targetingTypes.targetingOptions.search
abgerufen werden. Außerdem können Sie benutzerdefinierte TARGETING_TYPE_POI
-Targeting-Optionen-IDs erstellen, um Anzeigen auf bestimmte Breiten- und Längengradkoordinaten auszurichten.
So erstellen Sie eine ID für die Option „POI-Targeting“:
- Breiten- und Längengradkoordinaten abrufen (z. B. „40.7414691, -74.003387“)
- Koordinatenwerte auf die sechste Dezimalstelle runden (z. B. „40.741469, -74.003387“)
- Entfernen Sie die Dezimalstellen aus den Koordinatenwerten (z. B. „40741469, -74003387“).
- Verketten Sie die beiden Werte zu einem einzelnen String, getrennt durch ein Semikolon (z. B. „40741469;-74003387“).
Der resultierende String kann als targetingOptionId
beim Erstellen einer TARGETING_TYPE_POI
zugewiesenen Targeting-Option verwendet werden.
Beim Erstellen werden die Felder targetingOptionId
und assignedTargetingOptionId
der zugewiesenen Ressource für Targeting-Optionen aktualisiert. Es werden ein Semikolon und ein alphanumerischer Hash angehängt.
Targeting-Option zuweisen
Das einer Werbebuchung zugewiesene Targeting wird als zugewiesene Targeting-Option dargestellt. Sie können diese Entitäten mit dem Dienst für zugewiesene Targeting-Optionen verwalten. Wenn Sie eine zugewiesene Targeting-Option erstellen, werden diese Targeting-Details auf die übergeordnete Werbebuchung angewendet. Wenn Sie eine vorhandene Targeting-Option löschen, wird das Targeting entfernt.
Verwenden Sie advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
, um zugewiesene Targeting-Optionen zu erstellen. Geben Sie die Targeting-Parameter im Feld details
der zugewiesenen Targeting-Optionsressource an, die dem gewünschten Targeting-Typ entspricht.
Hier ein Beispiel für das Erstellen einer zugewiesenen Ausrichtungsoption vom Typ TARGETING_TYPE_BROWSER
:
Java
// Create an AssignedTargetingOption object of the // browser targeting type. AssignedTargetingOption assignedTargetingOption = new AssignedTargetingOption() .setBrowserDetails( new BrowserAssignedTargetingOptionDetails() .setTargetingOptionId(targeting-option-id)); // Configure the create request. AssignedTargetingOptions.Create request = service .advertisers() .lineItems() .targetingTypes() .assignedTargetingOptions() .create( advertiser-id, line-item-id, "TARGETING_TYPE_BROWSER", assignedTargetingOption); // Send the request. AssignedTargetingOption response = request.execute(); // Display the new assigned targeting option. System.out.printf("AssignedTargetingOption %s was created.", response.getName());
Python
# Create a assigned targeting option object. assigned_targeting_option_obj = { 'browserDetails': { 'targetingOptionId': targeting-option-id } } # Create the assigned targeting option. assigned_targeting_option = service.advertisers().lineItems()\ .targetingTypes().assignedTargetingOptions().create( advertiserId=advertiser-id, lineItemId=line-item-id, targetingType="TARGETING_TYPE_BROWSER", body=assigned_targeting_option_obj ).execute() # Display the new assigned targeting option. print("Assigned Targeting Option %s was created." % assigned_targeting_option["name"])
PHP
// Create a assigned targeting option object. $assignedTargetingOption = new Google_Service_DisplayVideo_AssignedTargetingOption(); // Create and set browser details. $details = new Google_Service_DisplayVideo_BrowserAssignedTargetingOptionDetails(); $details->setTargetingOptionId(targeting-option-id); $assignedTargetingOption->setBrowserDetails($details); // Call the API, creating the browser assigned targeting option for the // given line item. $result = $this ->service ->advertisers_lineItems_targetingTypes_assignedTargetingOptions ->create( advertiser-id, line-item-id, 'TARGETING_TYPE_BROWSER', $assignedTargetingOption ); printf( 'Assigned Targeting Option %s was created.\n', $result['name'] );
Fehler
Fehler bei der Ausrichtungskonfiguration
Für das Targeting in Display & Video 360 gelten eine Reihe komplexer Regeln. Diese werden in der Display & Video 360 API durch Fehler erzwungen, die beim Erstellen der zugewiesenen Targeting-Option zurückgegeben werden. Der von der API zurückgegebene Fehler gibt den Verstoß an.
Fehler werden in den meisten Fällen durch vorhandenes Targeting verursacht, das einer Werbebuchung zugewiesen ist. Verwenden Sie advertisers.lineItems.targetingTypes.assignedTargetingOptions.list
, um alle Targeting-Optionen eines bestimmten Targeting-Typs abzurufen, der einer Werbebuchung zugewiesen ist. Prüfen Sie dann, ob das gewünschte Targeting unter Berücksichtigung der Einschränkungen möglich ist. Entfernen Sie mit advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
alle unerwünschten Targeting-Optionen, bevor Sie noch einmal versuchen, die gewünschte zugewiesene Targeting-Option zu erstellen.
Targetingfehler bei „YouTube und Partner“
Das Targeting speziell für YouTube & Partner-Kampagnen kann nicht mit der Display & Video 360 API aktualisiert werden. Solche Versuche führen zu Fehlern.
Das Targeting für „YouTube und Partner“ umfasst alle Targeting-Optionen, die direkt „YouTube und Partner“-Werbebuchungen und Anzeigengruppen zugewiesen sind, sowie alle Targeting-Optionen der folgenden Targeting-Typen:
TARGETING_TYPE_SESSION_POSITION
TARGETING_TYPE_YOUTUBE_CHANNEL
TARGETING_TYPE_YOUTUBE_VIDEO
Fehler bei der Gleichzeitigkeit
Wenn Sie versuchen, die Einstellungen oder das Targeting einer einzelnen Werbebuchung über mehrere gleichzeitige Anfragen zu aktualisieren, führt dies zu einem Fehler.
Wenn Sie mehrere zugewiesene Targeting-Optionen für eine einzelne Werbebuchung gleichzeitig hinzufügen oder entfernen möchten, sollten Sie eine Bulk-Bearbeitungsanfrage verwenden. Wenn Sie die Einstellungen und das Targeting einer Werbebuchung aktualisieren möchten, senden Sie die advertisers.lineItems.patch
-Anfrage und die entsprechende Targeting-Anfrage nacheinander, damit die zweite Anfrage erst gesendet wird, wenn die erste eine Antwort zurückgegeben hat.
Bulk- und ressourcenweite Targeting-Vorgänge
Mit den Targeting-Methoden Bulk und ressourcenweit können Sie zugewiesene Targeting-Optionen für alle Targeting-Typen verwalten:
- Mit Bulk-Ausrichtungsmethoden können Sie Ausrichtungsoptionen für mehrere Ausrichtungstypen und mehrere Ressourcen abrufen oder bearbeiten. Mit
advertisers.lineItems.bulkListAssignedTargetingOptions
können Sie die vollständigen Targeting-Konfigurationen mehrerer Werbebuchungen abrufen. Mitadvertisers.lineItems.bulkEditAssignedTargetingOptions
können Sie das Targeting für mehrere Werbebuchungen gleichzeitig aktualisieren. Sie sind nur imadvertisers.lineItems
-Dienst verfügbar. - Mit ressourcenweiten Targeting-Methoden können Sie Targeting-Optionen für mehrere Targeting-Typen für eine einzelne Ressource abrufen oder bearbeiten. Sie sind in den Diensten
partners
undadvertisers
verfügbar und heißenlistAssignedTargetingOptions
odereditAssignedTargetingOptions
.
Wenn Sie sich einen vollständigen Überblick über das aktuelle Targeting einer Werbebuchung verschaffen, eine vordefinierte Targeting-Konfiguration auf eine Werbebuchung anwenden oder gleichzeitig mehrere Änderungen am Targeting einer Werbebuchung vornehmen möchten, sollten Sie diese Targeting-Methoden verwenden.
Listen-Targeting im Bulk-Verfahren
advertisers.lineItems.bulkListAssignedTargetingOptions
bietet die Möglichkeit, sich alle Targeting-Methoden anzusehen, die einer oder mehreren Werbebuchungen zugewiesen sind. Dabei werden verschiedene Targeting-Typen berücksichtigt. Die Funktionsweise ähnelt der anderer list
-Methoden. Mit dem Abfrageparameter filter
können Sie die Ergebnisse nach TargetingType
oder Inheritance
filtern.
Hier ist ein Beispiel dafür, wie Sie alle Targeting-Optionen auflisten, die einer Werbebuchung zugewiesen sind und vom übergeordneten Partner oder Werbetreibenden übernommen werden:
Java
// Configure the bulk list request. LineItems.BulkListAssignedTargetingOptions request = service.advertisers().lineItems() .bulkListAssignedTargetingOptions(advertiser-id); // Set Line Items to retrieve targeting for. request.setLineItemIds(line-item-ids); // Set filter to only return inherited assigned targeting options. request.setFilter( "inheritance=\"INHERITED_FROM_ADVERTISER\" OR inheritance=\"INHERITED_FROM_PARTNER\""); // Create the response and nextPageToken variables. BulkListAssignedTargetingOptionsResponse response; String nextPageToken = null; do { // Set page token and execute the list request. response = request.setPageToken(nextPageToken).execute(); // Check if the response is empty. if (response.isEmpty()) { System.out.print("Bulk list request returned no Assigned Targeting Options"); break; } // Iterate over retrieved line item assigned targeting option wrapper objects. for (LineItemAssignedTargetingOption lineItemAssignedTargetingOption : response.getLineItemAssignedTargetingOptions()) { System.out.printf( "Assigned Targeting Option %s found\n", lineItemAssignedTargetingOption.getAssignedTargetingOption().getName()); } // Update the next page token. nextPageToken = response.getNextPageToken(); } while (!Strings.isNullOrEmpty(nextPageToken));
Python
# 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-ids, filter="inheritance=\"INHERITED_FROM_ADVERTISER\" OR " "inheritance=\"INHERITED_FROM_PARTNER\"", pageToken=next_page_token ).execute() # Check if response is empty. if not response: print("Bulk list request returned no Assigned Targeting Options") break # Iterate over retrieved assigned targeting options. for lineItemAssignedTargetingOption in response['lineItemAssignedTargetingOptions']: print("Assigned Targeting Option %s found" % (lineItemAssignedTargetingOption['assignedTargetingOption']['name'])) # Break out of loop if there is no next page. if 'nextPageToken' not in response: break # Update the next page token. next_page_token = response['nextPageToken']
PHP
// Create the page token variable. $nextPageToken = null; do { // Build the query parameters object for the request. $optParams = array( 'lineItemIds' => line-item-ids, 'filter' => "inheritance=\"INHERITED_FROM_ADVERTISER\" OR " . "inheritance=\"INHERITED_FROM_PARTNER\"", 'pageToken' => $nextPageToken ); // Call the API, getting all the assigned targeting options for the // identified line item. $response = $service ->advertisers_lineItems ->bulkListAssignedTargetingOptions( advertiser-id, $optParams ); // Print the returned assigned targeting options. if (!empty($response->getLineItemAssignedTargetingOptions())) { foreach ($response->getLineItemAssignedTargetingOptions() as $option) { printf('Assigned Targeting Option %s found\n', $option->getAssignedTargetingOption()['name']); } } else { print('No targeting options returned\n'); } // Update the next page token. $nextPageToken = $response->getNextPageToken(); } while ( !empty($response->getLineItemAssignedTargetingOptions()) && $nextPageToken);
Targeting im Bulk bearbeiten
Mit advertisers.lineItems.bulkEditAssignedTargetingOptions
können Sie einer oder mehreren Werbebuchungen gleichzeitig mehrere Ausrichtungsoptionen verschiedener Ausrichtungstypen hinzufügen und entfernen.
Die Methode nimmt eine Liste von DeleteAssignedTargetingOptionsRequests
und eine Liste von CreateAssignedTargetingOptionsRequests
an. Ein einzelnes Anfrageobjekt kann das Löschen oder Erstellen mehrerer zugewiesener Targeting-Optionen desselben Targeting-Typs darstellen.
Wenn beim Löschen oder Erstellen einer zugewiesenen Targeting-Option ein Fehler für eine Werbebuchung auftritt, wird die Bulk-Aktion für diese Werbebuchung abgebrochen. Die Anfrage gibt eine Liste der erfolgreich aktualisierten Werbebuchungen sowie Listen der Werbebuchungen, die nicht aktualisiert werden konnten und der zugehörigen Fehler zurück.
Im Folgenden finden Sie ein Beispiel für die Bulk-Bearbeitung zugewiesener Targeting-Optionen für eine oder mehrere Werbebuchungen. Dazu werden Listen mit zugewiesenen Targeting-Optionen zum Löschen und Targeting-Optionen zum Erstellen verwendet:
Java
// Create a bulk edit request. BulkEditAssignedTargetingOptionsRequest requestContent = new BulkEditAssignedTargetingOptionsRequest(); // Set line item IDs in edit request. requestContent.setLineItemIds(line-item-ids); // Build delete request list. ArrayList<DeleteAssignedTargetingOptionsRequest> deleteRequests = new ArrayList<DeleteAssignedTargetingOptionsRequest>(); // Add browser assigned targeting option IDs to delete request list. deleteRequests.add(new DeleteAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_BROWSER") .setAssignedTargetingOptionIds(delete-browser-assigned-targeting-ids)); // Add device make or model assigned targeting option IDs to delete request list. deleteRequests.add(new DeleteAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_DEVICE_MAKE_MODEL") .setAssignedTargetingOptionIds( delete-device-make-model-assigned-targeting-ids)); // Set delete requests in edit request. requestContent.setDeleteRequests(deleteRequests); // Build create request list. ArrayList<CreateAssignedTargetingOptionsRequest> createRequests = new ArrayList<CreateAssignedTargetingOptionsRequest>(); // Create browser assigned targeting option create request. CreateAssignedTargetingOptionsRequest createBrowserTargetingRequest = new CreateAssignedTargetingOptionsRequest(); createBrowserTargetingRequest.setTargetingType("TARGETING_TYPE_BROWSER"); // Create and set list of browser assigned targeting options. ArrayList<AssignedTargetingOption> createBrowserAssignedTargetingOptions = new ArrayList<AssignedTargetingOption>(); for (String targetingOptionId : create-browser-assigned-targeting-ids) { createBrowserAssignedTargetingOptions.add(new AssignedTargetingOption() .setBrowserDetails( new BrowserAssignedTargetingOptionDetails() .setTargetingOptionId(targetingOptionId))); } createBrowserTargetingRequest .setAssignedTargetingOptions(createBrowserAssignedTargetingOptions); // Add browser assigned targeting options to list of create requests. createRequests.add(createBrowserTargetingRequest); // Set create requests in edit request. requestContent.setCreateRequests(createRequests); // Configure the bulk edit request. LineItems.BulkEditAssignedTargetingOptions request = service.advertisers().lineItems() .bulkEditAssignedTargetingOptions( advertiser-id, requestContent); // Execute bulk edit request. BulkEditAssignedTargetingOptionsResponse response = request.execute(); // Check if any line items updated successfully. if (response.getUpdatedLineItemIds() == null || response.getUpdatedLineItemIds().isEmpty()) { System.out.println("No line items were updated successfully."); } else { System.out.printf( "Targeting configurations for the following line item IDs were updated: %s.\n", Arrays.toString(response.getUpdatedLineItemIds().toArray())); } // Check if any line items failed to update. if (response.getFailedLineItemIds() == null || response.getFailedLineItemIds().isEmpty()) { System.out.println("No line items failed to update."); } else { // Print the line items that failed to update. 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
# Build assigned targeting option objects to create. createBrowserAssignedTargetingOptions = [] for targeting_id in create-browser-assigned-targeting-ids: createBrowserAssignedTargetingOptions.append( {'browserDetails': {'targetingOptionId': targeting_id}} ) # Create a bulk edit request. bulk_edit_line_item_request = { 'lineItemIds': line-item-ids, 'deleteRequests': [ { 'targetingType': 'TARGETING_TYPE_BROWSER', 'assignedTargetingOptionIds': delete-browser-assigned-targeting-ids }, { 'targetingType': 'TARGETING_TYPE_DEVICE_MAKE_MODEL', 'assignedTargetingOptionIds': delete-device-make-model-assigned-targeting-ids } ], 'createRequests': [ { 'targetingType': 'TARGETING_TYPE_BROWSER', 'assignedTargetingOptions': createBrowserAssignedTargetingOptions } ] } # Edit the line item targeting. response = service.advertisers().lineItems()\ .bulkEditAssignedTargetingOptions( advertiserId=advertiser-id, body=bulk_edit_line_item_request ).execute() # Print successfully updated line items. if 'updatedLineItemIds' not in response: print("No line items were updated successfully.") else: print("Targeting configurations for the following line item IDs were updated: %s" % response['updatedLineItemIds']) # Print line items that failed to update. if 'failedLineItemIds' not in response: print("No line items failed to update.") else: 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
// Create delete request list. $deleteRequests = array(); // Create and add browser assigned targeting option IDs to delete request list. $deleteBrowserTargetingRequest = new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest(); $deleteBrowserTargetingRequest->setTargetingType( "TARGETING_TYPE_BROWSER" ); $deleteBrowserTargetingRequest->setAssignedTargetingOptionIds( delete-browser-assigned-targeting-ids ); $deleteRequests[] = $deleteBrowserTargetingRequest; // Create and add device assigned targeting option IDs to delete request list. $deleteDeviceTargetingRequest = new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest(); $deleteDeviceTargetingRequest->setTargetingType( "TARGETING_TYPE_DEVICE_MAKE_MODEL" ); $deleteDeviceTargetingRequest->setAssignedTargetingOptionIds( delete-device-make-model-assigned-targeting-ids ); $deleteRequests[] = $deleteDeviceTargetingRequest; // Create create request list. $createRequests = array(); // Create and populate list of browser assigned targetion options to create. $createBrowserAssignedTargetingOptions = array(); foreach (create-browser-assigned-targeting-ids as $optionId) { $option = new Google_Service_DisplayVideo_AssignedTargetingOption(); $details = new Google_Service_DisplayVideo_BrowserAssignedTargetingOptionDetails(); $details->setTargetingOptionId($optionId); $option->setBrowserDetails($details); $createBrowserAssignedTargetingOptions[] = $option; } // Create and add browser assigned targeting option create request to create // request list. $createBrowserTargetingRequest = new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest(); $createBrowserTargetingRequest->setTargetingType( "TARGETING_TYPE_BROWSER" ); $createBrowserTargetingRequest->setAssignedTargetingOptions( $createBrowserAssignedTargetingOptions ); $createRequests[] = $createBrowserTargetingRequest; // Create a bulk edit request and assign create and delete request lists. $body = new Google_Service_DisplayVideo_BulkEditAssignedTargetingOptionsRequest(); $body->setLineItemIds(line-item-ids); $body->setCreateRequests($createRequests); $body->setDeleteRequests($deleteRequests); // Call the API, editing the assigned targeting options for the identified // line item. $response = $service ->advertisers_lineItems ->bulkEditAssignedTargetingOptions( advertiser-id, $body ); // Print successfully updated line items. 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); } } else { print('No line items were updated successfully.\n'); } // Print line items that 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()); } } else { print('No line items failed to update.\n'); }