Hedeflemeyi Ayarlayın

Hedefleme Seçenekleri, Atanan Hedefleme Seçenekleri ve Satır öğeleri hizmetlerinin tümü, Görüntülü Reklam Ağı'nda ve Video 360 API. Bu sayfada örnekler verilmiştir ve hedefleme seçeneklerini, satıra hedefleme seçeneklerini atama, öğeleri listelemek ve atananları listeleyip düzenlemek için satır öğelerinde toplu işlemler gerçekleştirme hedefleme seçeneklerini kullanabilirsiniz.

Kullanılabilir hedefleme seçeneklerini bulma

Hedefleme seçenekleri, kullanıcı tarafından belirtilen değişkenleri, mevcut hedeflenebilir değişkenleri kullanır veya önceden var olan seçenekleri kullanabilirsiniz. Önceden var olan seçenekler, enum değerleri veya hedefleme seçeneği kullanılarak belirlenir Hedefleme türüne bağlı olarak kimlikler. Hedeflenebilir varlıklar, . Hedefleme seçeneği kimlikleri ve varlık kimlikleri Görüntülü Reklam ve Video 360 API.

Ayarlanan enum değerlerini kullanma

Aşağıdaki hedefleme türlerine yönelik hedefleme seçenekleri şu şekilde atanır: belirli enum türleri:

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

Mevcut enum değerini tanımlamak için ilgili enum değerinin dize sürümü kullanılabilir. Bu hedefleme türlerinin AssignedTargetingOption kaynağı ve assignedTargetingOptionIdAlias alanında kullanılabilir. Şunları yapabilirsiniz: aşağıdaki durumlarda assignedTargetingOptionId yerine bu takma ad değerini kullanın: Atanan hedefleme seçeneklerini alma veya silme

Hedefleme seçeneği kimliklerini al

Önceden var olan seçenekleri kullanan hedefleme türleri, karşılık gelen hedefleme seçeneği kimlikleri.

Örneğin, ekranda mevcut konumların TARGETING_TYPE_ON_SCREEN_POSITION hedefleme türü kullanılarak hedeflenebilir. Her biri karşılık gelen bir hedefleme seçeneği kimliğine sahip olması gerekir.

Bu hedefleme seçeneği kimlikleri şuradan alınabilir: Hedefleme Seçenekleri hizmeti. Seçtiğiniz düzenleme moduna hedefleme türündeyse, alma iki yöntemden biriyle gerçekleştirilir:

  • Bağımsız alma veya kapsamlı liste: hedefleme türlerinin çoğu get ve list yöntemleri kullanılarak yapılabilir. Aşağıdaki öğelerin ayrıntılarını almak için targetingTypes.targetingOptions.get öğesini kullanın: Hedefleme türü ve hedefleme seçeneği kimliğiyle tanımlanan bir hedefleme seçeneği Tekliflerinizi otomatikleştirmek ve optimize etmek için Mevcut tüm öğeleri listelemek için targetingTypes.targetingOptions.list belirli bir hedefleme türündeki hedefleme seçenekleridir.
  • Arama: Konuma dayalı hedefleme türleri için seçenekler (TARGETING_TYPE_GEO_REGION, TARGETING_TYPE_POI ve TARGETING_TYPE_BUSINESS_CHAIN) search yöntemi kullanılarak alınmalıdır. Geri almak için targetingTypes.targetingOptions.search kullan belirli bir türdeki sorgu dizeleriyle eşleşen hedefleme seçenekleri.
ziyaret edin.

Aşağıda, olası hedefleme listelerini nasıl alabileceğinize ilişkin bir örnek verilmiştir TARGETING_TYPE_BROWSER hedefleme türü için seçenekler:

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
);

Hedeflenebilir varlıkları listeleyin

Mevcut bir hedeflenebilir varlığı kullanarak satır öğesini hedeflemek için kimliğini girin. Kanallar gibi hedeflenebilir varlıklar birleşik kitleler ve envanter kaynak grupları Görüntülü Reklam Ağı'nda ve Video 360 API.

Her hizmetin kendi get ve list yöntemleri vardır. get yöntemini kullanarak bir varlığın belirli bir reklamveren altında bulunduğunu doğrulama. list kullanın yöntemini kullanan tüm varlıklarını, bu kaynak türünün ve dolayısıyla belirli bir reklamverene hedefleme atamada kullanılabilir. satır öğesine gidin.

Hedeflenebilir varlıkların bir alt kümesi de API aracılığıyla yönetilebilir. Bu İlgili hizmetteki create ve patch yöntemleri kullanılarak gerçekleştirilir (örneğin, ve varlıklarda listelenen bağımsız değerlere yönelik hizmetler, örneğin envanter kaynaklarını negatif anahtar kelimeler ve konum.

ÖY hedefleme seçeneği kimlikleri oluştur

TARGETING_TYPE_POI altında, adlandırılmış önemli yer hedefleme seçenekleri targetingTypes.targetingOptions.search kullanılarak alındı. İçinde ek olarak özel TARGETING_TYPE_POI hedefleme seçeneği kimlikleri Belirli enlem-boylam koordinatlarını hedefleme

ÖY hedefleme seçeneği kimliği oluşturmak için aşağıdaki adımları izleyin:

  1. Enlem-boylam koordinatlarını alma (ör. "40.7414691, -74.003387")
  2. Koordinat değerlerini altıncı ondalık basamağa yuvarlayın (ör. "40.741469, -74,003387")
  3. Ondalık basamakları koordinat değerlerinden kaldırın (ör. "40741469, -74003387")
  4. Noktalı virgülle ayrılmış tek bir dize oluşturmak için iki değeri birleştirin (ör. "40741469;-74003387")

Sonuçta elde edilen dize, targetingOptionId TARGETING_TYPE_POI atanmış hedefleme seçeneği.

Oluşturulduktan sonra, targetingOptionIdassignedTargetingOptionId atanan hedefleme seçeneği kaynağı, noktalı virgül eklenerek güncellenir ve alfa-sayısal karma oluşturur.

Hedefleme seçeneği ata

Bir satır öğesine atanan hedefleme, Atanan Hedefleme Seçeneği. Bu varlıkları şurada yönetebilirsiniz: Atanan Hedefleme Seçenekleri hizmeti. Atanmış bir hedefleme seçeneği oluşturulduğunda, bu hedefleme ayrıntıları üst satır öğesi. Mevcut bir atanmış hedefleme seçeneği silindiğinde, hedeflemenize yardımcı olabilir.

Tekliflerinizi otomatikleştirmek ve optimize etmek için advertisers.lineItems.targetingTypes.assignedTargetingOptions.create atanan hedefleme seçeneklerini oluşturun. Hedefleme parametrelerini details alanı amaçlanan hedefleme türüne karşılık gelir.

Aşağıda, atanan hedefleme seçeneğinin nasıl oluşturulacağına ilişkin bir örnek verilmiştir: TARGETING_TYPE_BROWSER hedefleme türü:

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']
);

Hatalar

Hedefleme yapılandırma hataları

Proje yönetimi ile ilgili birçok karmaşık kurallar vardır Görüntülü Reklam Ağı'nda ve reklamlarda hedefleme Video 360. Bu politikalar Ekran ve Atanmış hedefleme seçeneği oluşturulurken döndürülen hatalarla Video 360 API. API'nin döndürdüğü hata, ihlali belirtir.

Hatalar çoğunlukla bir satır öğesine atanmış mevcut hedeflemeden kaynaklanır. Tekliflerinizi otomatikleştirmek ve optimize etmek için advertisers.lineItems.targetingTypes.assignedTargetingOptions.list için bir satıra atanmış belirli bir hedefleme türündeki tüm hedefleme seçeneklerini almak istenen hedeflemenin mümkün olup olmadığını değerlendirerek, ve advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete Böylece, istenen hedefi oluşturmayı tekrar denemeden önce istenmeyen hedeflemeyi atanan hedefleme seçeneğidir.

YouTube ve İş ortağı hedefleme hataları

Özellikle YouTube ve İş ortağı kampanyaları şunlar kullanılarak güncellenemez: Ekran ve Video 360 API'yi denemeye çalışmak hatayla sonuçlanır.

YouTube ve İş ortağı hedeflemesi, doğrudan YouTube ve Partners Satır Öğeleri ve Reklam Grupları'nın yanı sıra Şu hedefleme türlerinin tüm hedeflemeleri:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Eşzamanlılık hataları

Tek bir satır öğesinin ayarlarını veya hedeflemesini güncellemeye çalışma birden fazla eşzamanlı istek hatayla sonuçlanır.

Tek bir reklam için atanmış birden çok hedefleme seçeneği eklemeniz veya kaldırmanız gerekiyorsa satır öğesini aynı anda kullanmak için toplu düzenleme isteği. Bir satır öğesinin ayarlarını ve hedeflemeyi öğrenmek istiyorsanız, advertisers.lineItems.patch alakalı hedefleme isteğini üst üste vurarak ikinci reklamı da ilk istek yanıt döndürene kadar istek gönderilmez.

Toplu ve kaynak genelinde hedefleme işlemleri

Toplu ve kaynak genelinde hedefleme yöntemlerini kullanarak atanan farklı hedefleme seçenekleri:

Bir satır öğesinin mevcut hedeflemesinin tamamını görmek istiyorsanız hedefleme yapılandırmasını satır öğesinde önceden ayarlamış olmanız veya birden fazla değişiklik yapmanız gerekiyor eşlemek istiyorsanız bu hedeflemeyi kullanabilirsiniz: yöntemlerine göz atın.

Toplu olarak liste hedefleme

advertisers.lineItems.bulkListAssignedTargetingOptions bir veya daha fazla satır öğesine atanan tüm hedeflemenin incelenebilmesi için bir yöntem sunar farklı hedefleme türlerini kullanabilirsiniz. Diğer list ile benzer şekilde çalışır yöntemidir. Filtreleri filtrelemek için filter sorgu parametresini kullanabilirsiniz TargetingType veya Inheritance.

Aşağıda, bir satır öğesine atanan tüm hedefleme seçeneklerinin nasıl listeleneceğine dair bir örnek verilmiştir üst iş ortağı veya reklamveren tarafından devralınan izinler:

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);

Hedeflemeyi toplu olarak düzenleme

advertisers.lineItems.bulkEditAssignedTargetingOptions Çeşitli hedeflemelerde birden fazla hedefleme seçeneğinin eklenmesi ve kaldırılması için bir yol sunar bir veya daha fazla satır öğesinden istediğinizi seçin.

Bu yöntemde projenin DeleteAssignedTargetingOptionsRequests ve şunların listesi: CreateAssignedTargetingOptionsRequests. Tek bir istek nesne birden fazla atanan hedeflemenin silinmesini veya oluşturulmasını temsil edebilir aynı hedefleme türüne sahip seçeneklerdir.

Bir atanmış hedefleme seçeneğini silme veya oluşturma girişimi, hatası alırsanız ilgili satır öğesi için toplu işlem yapılmaz. İlgili içeriği oluşturmak için kullanılan isteği, başarıyla güncellenmiş bir satır listesi döndürüyor öğelerinin yanı sıra başarılı olmayan satır öğelerinin ve hataları gösterir.

Aşağıda, bir veya daha fazla kişi için atanan hedefleme seçeneklerinin nasıl toplu olarak düzenlenebileceğine ilişkin bir örnek verilmiştir: satır öğelerine verilen, silinecek ve hedeflenecek atanan hedefleme seçeneklerinin listeleri verilen satır öğeleri oluşturma seçenekleri:

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');
}