Wyświetlanie reklam w kampaniach generujących popyt jest kontrolowane za pomocą kierowania przypisanego do nadrzędnego partnera, reklamodawcy, elementu zamówienia i grup reklam.
Używaj kierowania przypisanego do elementu zamówienia i grupy reklam w kampanii generującej popyt, aby docierać do idealnych klientów i zwiększać skuteczność kampanii.
Wybierz miejsce przypisania kierowania
Kierowanie można przypisać zarówno do elementów zamówienia kampanii generujących popyt, jak i do grup reklam.
Przypisz kierowanie do elementu zamówienia generującego popyt, jeśli chcesz, aby było ono stosowane do wszystkich reklam wyświetlanych w ramach tego elementu zamówienia. W przeciwnym razie przypisz kierowanie do poszczególnych grup reklam.
Obsługa kierowania według typu zasobu kampanii generującej popyt
Każdy typ zasobu obsługuje określone typy kierowania.
Oto lista typów kierowania obsługiwanych przez elementy zamówienia generujące popyt:
TARGETING_TYPE_CARRIER_AND_ISPTARGETING_TYPE_DAY_AND_TIMETARGETING_TYPE_DEVICE_MAKE_MODELTARGETING_TYPE_DEVICE_TYPETARGETING_TYPE_GEO_REGIONTARGETING_TYPE_KEYWORDTARGETING_TYPE_LANGUAGETARGETING_TYPE_NEGATIVE_KEYWORD_LISTTARGETING_TYPE_OPERATING_SYSTEMTARGETING_TYPE_POI
Oto lista typów kierowania obsługiwanych przez grupy reklam generujących popyt:
TARGETING_TYPE_AGE_RANGETARGETING_TYPE_APPTARGETING_TYPE_APP_CATEGORYTARGETING_TYPE_AUDIENCE_GROUPTARGETING_TYPE_CATEGORYTARGETING_TYPE_GENDERTARGETING_TYPE_GEO_REGIONTARGETING_TYPE_HOUSEHOLD_INCOMETARGETING_TYPE_KEYWORDTARGETING_TYPE_LANGUAGETARGETING_TYPE_PARENTAL_STATUSTARGETING_TYPE_URLTARGETING_TYPE_YOUTUBE_CHANNELTARGETING_TYPE_YOUTUBE_VIDEO
Obsługa wartości TARGETING_TYPE_GEO_REGION, TARGETING_TYPE_POI i TARGETING_TYPE_LANGUAGE zależy od ustawienia pola demandGenSettings.geoLanguageTargetingEnabled w zasobie nadrzędnym LineItem. Jeśli to pole ma wartość „true”, kierowanie na lokalizację i język można przypisać tylko do nadrzędnego elementu zamówienia. Jeśli pole ma wartość „false”,
to kierowanie można przypisać tylko do poszczególnych grup reklam.
Znajdowanie dostępnych opcji kierowania
Kierowanie jest identyfikowane na podstawie jego typu. Określ opcje kierowania, korzystając z jednej z tych metod:
- Użyj odpowiedniej wartości wyliczeniowej, np. w przypadku typów wyliczeniowych
AgeRangelubExchange. - Pobieraj elementy, na które można kierować reklamy, takie jak kanały lub listy lokalizacji, za pomocą powiązanej usługi.
- Pobieraj identyfikatory opcji kierowania dla danego typu kierowania za pomocą metod
listisearch.
Pobieranie istniejącego kierowania
Obecne kierowanie ogranicza opcje kierowania, które można dodać do elementu zamówienia lub grupy reklam.
Elementy zamówienia i grupy reklam kampanii generujących popyt wyświetlają tylko odziedziczone kierowanieTARGETING_TYPE_KEYWORD. Oznacza to, że musisz pobrać kierowanie dla reklamodawcy, elementu zamówienia i grupy reklam, aby mieć pełne informacje o wszystkich rodzajach kierowania, które mają wpływ na wyświetlanie reklam.
Pobieraj istniejące kierowanie w różnych typach kierowania za pomocą żądań list zbiorczych.
Pobieranie dotychczasowego kierowania na partnerów i reklamodawców
Aby uzyskać informacje o dotychczasowym kierowaniu reklamodawcy, w tym o kierowaniu odziedziczonym po partnerze:
Python
# Provide the ID of the advertiser. advertiser_id = advertiser-id # Create the page token variable. next_page_token = "" while True: # Execute the list request. response = ( service.advertisers() .listAssignedTargetingOptions( advertiserId=advertiser_id, pageToken=next_page_token, ) .execute() ) # If response is not empty, display the retrieved assigned targeting # options. if response: for assigned_targeting_option in response.get( "assignedTargetingOptions", [] ): ato_name = assigned_targeting_option.get( "name", None ) if ato_name: print(f"Assigned Targeting Option {ato_name}.") else: print(f"No targeting is currently assigned to {advertiser_id}.") sys.exit(1) # Update the next page token. # Break out of loop if there is no next page. if "nextPageToken" in response: next_page_token = response["nextPageToken"] else: break
Pobieranie dotychczasowych ustawień kierowania elementów zamówienia
Aby przypisać dotychczasowe kierowanie bezpośrednio do elementu zamówienia:
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the Demand Gen line item. line_item_id = line-item-id # 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_id], pageToken=next_page_token, ) .execute() ) # If response is not empty, display the retrieved assigned targeting # options line items. if response: for assigned_option in response.get( "lineItemAssignedTargetingOptions", [] ): ato_name = assigned_option.get("assignedTargetingOption", {}).get( "name", None ) if ato_name: print(f"Assigned Targeting Option {ato_name} found.") else: print(f"No targeting is currently assigned to {line_item_id}.") sys.exit(1) # Update the next page token. # Break out of loop if there is no next page. if "nextPageToken" in response: next_page_token = response["nextPageToken"] else: break
Pobieranie istniejącego kierowania grupy reklam
Aby przypisać dotychczasowe kierowanie bezpośrednio do grupy reklam:
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the ad group. ad_group_id = ad-group-id # Create the page token variable. next_page_token = "" while True: # Execute the list request. response = ( service.advertisers() .adGroups() .bulkListAssignedTargetingOptions( advertiserId=advertiser_id, adGroupIds=[ad_group_id], pageToken=next_page_token, ) .execute() ) # If response is not empty, display the retrieved assigned targeting # options line items. if response: for assigned_option in response.get( "adGroupAssignedTargetingOptions", [] ): ato_name = assigned_option.get("assignedTargetingOption", {}).get( "name", None ) if ato_name: print(f"Assigned Targeting Option {ato_name} found.") else: print(f"No targeting is currently assigned to {ad_group_id}.") sys.exit(1) # Update the next page token. # Break out of loop if there is no next page. if "nextPageToken" in response: next_page_token = response["nextPageToken"] else: break
Przypisywanie kierowania do zasobów
Aby zaktualizować kierowanie elementu zamówienia i grupy reklam, musisz wysłać osobne żądania.
Przypisywanie kierowania elementu zamówienia
Aby dodać do elementu zamówienia podaną niżej logikę kierowania:
- Wyświetla tylko reklamy na komputerach.
Nie licytuj zasobów reklamowych wyświetlanych obok treści pasujących do słowa kluczowego „lody”.
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the line item. line_item_id = line-item-id # Build the "ice cream" negative keyword assigned targeting option. keyword_assigned_targeting_option = { "keywordDetails": {"keyword": "ice cream", "negative": True} } # Build the delete request for device type targeting to remove all device # types to only target computers. device_type_delete_request = { "targetingType": "TARGETING_TYPE_DEVICE_TYPE", "assignedTargetingOptionIds": [ "DEVICE_TYPE_SMART_PHONE", "DEVICE_TYPE_CONNECTED_TV", "DEVICE_TYPE_TABLET" ], } # Create a bulk edit request. bulk_edit_targeting_request = { "lineItemIds": [line_item_id], "createRequests": [ { "targetingType": "TARGETING_TYPE_KEYWORD", "assignedTargetingOptions": [ keyword_assigned_targeting_option ], } ], "deleteRequests": [ device_type_delete_request ] } # Build and execute request. response = ( service.advertisers() .lineItems() .bulkEditAssignedTargetingOptions( advertiserId=advertiser_id, body=bulk_edit_targeting_request ) .execute() ) # Print the request results. if ( "updatedLineItemIds" in response and len(response["updatedLineItemIds"]) != 0 ): print( f'Targeting configurations for {response["updatedLineItemIds"][0]} ' "were successfully updated." ) elif ( "failedLineItemIds" in response and len(response["failedLineItemIds"]) != 0 ): print( f'Targeting configurations for {response["failedLineItemIds"][0]} ' "failed to update." ) if "errors" in response and len(response["errors"]) != 0: print("The failed updates were caused by the following errors:") for error in response["errors"]: print(f'Code {error["code"]}: {error["message"]}') else: print("No successful or failed updates were reported.")
Przypisywanie kierowania grupy reklam
Aby dodać do grupy reklam podaną niżej logikę kierowania:
- Wyświetlaj reklamy tylko rodzicom.
Nie wyświetlaj reklam na podanym kanale YouTube.
Python
# Provide the ID of the parent advertiser. advertiser_id = advertiser-id # Provide the ID of the ad group. ad_group_id = ad-group-id # Provide the YouTube channel ID to negatively target. yt_channel_id = youtube-channel-id # Build the assigned targeting option to negatively target the given YouTube # channel. youtube_channel_assigned_targeting_options = [ { "youtubeChannelDetails": { "channelId": yt_channel_id, "negative": True } }, ] # Build the assigned targeting options to target only parents. parental_status_assigned_targeting_options = [ { "parentalStatusDetails": { "parentalStatus": "PARENTAL_STATUS_PARENT" } }, ] # Create a bulk edit request. bulk_edit_targeting_request = { "adGroupIds": [ad_group_id], "createRequests": [ { "targetingType": "TARGETING_TYPE_YOUTUBE_CHANNEL", "assignedTargetingOptions": ( youtube_channel_assigned_targeting_options ) }, { "targetingType": "TARGETING_TYPE_PARENTAL_STATUS", "assignedTargetingOptions": ( parental_status_assigned_targeting_options ), } ] } # Build and execute request. response = ( service.advertisers() .adGroups() .bulkEditAssignedTargetingOptions( advertiserId=advertiser_id, body=bulk_edit_targeting_request ) .execute() ) # Print the request results. if ( "updatedAdGroupIds" in response and len(response["updatedAdGroupIds"]) != 0 ): print( f'Targeting configurations for {response["updatedAdGroupIds"][0]} ' "were successfully updated." ) elif ( "failedAdGroupIds" in response and len(response["failedAdGroupIds"]) != 0 ): print( f'Targeting configurations for {response["failedAdGroupIds"][0]} ' "failed to update." ) if "errors" in response and len(response["errors"]) != 0: print("The failed updates were caused by the following errors:") for error in response["errors"]: print(f'Code {error["code"]}: {error["message"]}') else: print("No successful or failed updates were reported.")