So richten Sie dynamische Suchanzeigen mit der Google Ads API ein:
- Erstellen Sie eine Kampagne und geben Sie die zugehörige Domain und den Sprachcode an.
- Erstellen Sie eine Anzeigengruppe für Funktionen, die mit dynamischen Suchanzeigen zusammenhängen.
- Erstellen Sie eine oder mehrere dynamische Suchanzeigen.
- Geben Sie mindestens ein Kriterium für die Auslieferung der dynamischen Suchanzeigen in der Kampagne an.
Kampagne erstellen
Wenn Sie dynamische Suchanzeigen für Ihre Kampagne konfigurieren möchten, erstellen Sie ein Campaign mit advertising_channel_type auf AdvertisingChannelType.SEARCH. Geben Sie außerdem die Website-Domain (domain_name, ohne http:// oder https://) und die Sprache (language_code) an, in der die dynamischen Suchanzeigen ausgeliefert werden, indem Sie das Feld dynamic_search_ads_setting des Campaign mit einem DynamicSearchAdsSetting festlegen. Sowohl domain_name als auch language_code sind erforderlich. Sie können use_supplied_urls_only auch für DynamicSearchAdsSetting festlegen. true schränkt das Targeting auf DSA-Seitenfeed-URLs ein. Bei false werden sowohl der Google-Index Ihrer Domain als auch alle Seitenfeed-URLs verwendet.
Im folgenden Beispiel wird eine Kampagne mit dynamischen Suchanzeigen erstellt:
Java
private static String addCampaign( GoogleAdsClient googleAdsClient, long customerId, String budgetResourceName) { // Creates the campaign. Campaign campaign = Campaign.newBuilder() .setName("Interplanetary Cruise #" + getPrintableDateTime()) .setAdvertisingChannelType(AdvertisingChannelType.SEARCH) .setStatus(CampaignStatus.PAUSED) .setManualCpc(ManualCpc.newBuilder().build()) .setCampaignBudget(budgetResourceName) // Enables the campaign for DSAs. .setDynamicSearchAdsSetting( DynamicSearchAdsSetting.newBuilder() .setDomainName("example.com") .setLanguageCode("en") .build()) // Declares whether this campaign serves political ads targeting the EU. .setContainsEuPoliticalAdvertising(DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING) .setStartDateTime(new DateTime().plusDays(1).toString("yyyy-MM-dd 00:00:00")) .setEndDateTime(new DateTime().plusDays(30).toString("yyyy-MM-dd 23:59:59")) .build(); // Creates the operation. CampaignOperation operation = CampaignOperation.newBuilder().setCreate(campaign).build(); // Creates the campaign service client. try (CampaignServiceClient campaignServiceClient = googleAdsClient.getLatestVersion().createCampaignServiceClient()) { // Adds the campaign. MutateCampaignsResponse response = campaignServiceClient.mutateCampaigns( Long.toString(customerId), ImmutableList.of(operation)); String campaignResourceName = response.getResults(0).getResourceName(); // Displays the results. System.out.printf("Added campaign with resource name '%s'.%n", campaignResourceName); return campaignResourceName; } }
C#
private static string AddCampaign(GoogleAdsClient client, long customerId, string budgetResourceName) { // Get the CampaignService. CampaignServiceClient campaignService = client.GetService(Services.V25.CampaignService); // Create the campaign. Campaign campaign = new Campaign() { Name = "Interplanetary Cruise #" + ExampleUtilities.GetRandomString(), AdvertisingChannelType = AdvertisingChannelType.Search, Status = CampaignStatus.Paused, ManualCpc = new ManualCpc(), CampaignBudget = budgetResourceName, // Enable the campaign for DSAs. DynamicSearchAdsSetting = new DynamicSearchAdsSetting() { DomainName = "example.com", LanguageCode = "en" }, // Declare whether or not this campaign contains political ads targeting the EU. ContainsEuPoliticalAdvertising = EuPoliticalAdvertisingStatus.DoesNotContainEuPoliticalAdvertising, StartDateTime = DateTime.Now.AddDays(1).ToString("yyyyMMdd 00:00:00"), EndDateTime = DateTime.Now.AddDays(30).ToString("yyyyMMdd 23:59:59") }; // Create the operation. CampaignOperation operation = new CampaignOperation() { Create = campaign }; // Add the campaign. MutateCampaignsResponse response = campaignService.MutateCampaigns(customerId.ToString(), new CampaignOperation[] { operation }); // Displays the result. string campaignResourceName = response.Results[0].ResourceName; Console.WriteLine($"Added campaign with resource name '{campaignResourceName}'."); return campaignResourceName; }
PHP
private static function createCampaign( GoogleAdsClient $googleAdsClient, int $customerId, string $campaignBudgetResourceName ) { $campaign = new Campaign( [ 'name' => 'Interplanetary Cruise #' . Helper::getPrintableDatetime(), 'advertising_channel_type' => AdvertisingChannelType::SEARCH, 'status' => CampaignStatus::PAUSED, 'manual_cpc' => new ManualCpc(), 'campaign_budget' => $campaignBudgetResourceName, // Enables the campaign for DSAs. 'dynamic_search_ads_setting' => new DynamicSearchAdsSetting( [ 'domain_name' => 'example.com', 'language_code' => 'en' ] ), // Declare whether or not this campaign serves political ads targeting the EU. 'contains_eu_political_advertising' => EuPoliticalAdvertisingStatus::DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING, // Optional: Sets the start and end dates for the campaign, beginning one day from // now and ending a month from now. 'start_date_time' => date('Y-m-d 00:00:00', strtotime('+1 day')), 'end_date_time' => date('Y-m-d 23:59:59', strtotime('+1 month')) ] ); // Creates a campaign operation. $campaignOperation = new CampaignOperation(); $campaignOperation->setCreate($campaign); // Issues a mutate request to add campaigns. $campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); /** * @var MutateCampaignsResponse $campaignResponse */ $campaignResponse = $campaignServiceClient->mutateCampaigns( MutateCampaignsRequest::build($customerId, [$campaignOperation]) ); $campaignResourceName = $campaignResponse->getResults()[0]->getResourceName(); printf("Added campaign named '%s'.%s", $campaignResourceName, PHP_EOL); return $campaignResourceName; }
Python
def create_campaign( client: GoogleAdsClient, customer_id: str, budget_resource_name: str ) -> str: """Creates a Dynamic Search Ad Campaign under the given customer ID. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID str. budget_resource_name: a resource_name str for a Budget Returns: A resource_name str for the newly created Campaign. """ # Retrieve a new campaign operation object. campaign_operation: CampaignOperation = client.get_type("CampaignOperation") campaign: Campaign = campaign_operation.create campaign.name = f"Interplanetary Cruise #{uuid4()}" campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.SEARCH ) # Recommendation: Set the campaign to PAUSED when creating it to prevent the # ads from immediately serving. Set to ENABLED once you've added targeting # and the ads are ready to serve. campaign.status = client.enums.CampaignStatusEnum.PAUSED campaign.manual_cpc.enhanced_cpc_enabled = True campaign.campaign_budget = budget_resource_name # Required: Enable the campaign for DSAs by setting the campaign's dynamic # search ads setting domain name and language. campaign.dynamic_search_ads_setting.domain_name = "example.com" campaign.dynamic_search_ads_setting.language_code = "en" # Declare whether or not this campaign serves political ads targeting the # EU. Valid values are: # CONTAINS_EU_POLITICAL_ADVERTISING # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING campaign.contains_eu_political_advertising = ( client.enums.EuPoliticalAdvertisingStatusEnum.DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING ) # Optional: Sets the start and end dates for the campaign, beginning one day # from now and ending a month from now. campaign.start_date_time = (datetime.now() + timedelta(days=1)).strftime( "%Y%m%d 00:00:00" ) campaign.end_date_time = (datetime.now() + timedelta(days=30)).strftime( "%Y%m%d 23:59:59" ) # Retrieve the campaign service. campaign_service: CampaignServiceClient = client.get_service( "CampaignService" ) # Issues a mutate request to add campaign. response: MutateCampaignsResponse = campaign_service.mutate_campaigns( customer_id=customer_id, operations=[campaign_operation] ) resource_name: str = response.results[0].resource_name print(f'Created campaign with resource_name: "{resource_name}"')
Ruby
def create_campaign(client, customer_id, budget_resource_name) campaign = client.resource.campaign do |c| c.name = "Interplanetary Cruise #{(Time.now.to_f * 1000).to_i}" c.advertising_channel_type = :SEARCH c.status = :PAUSED c.manual_cpc = client.resource.manual_cpc c.campaign_budget = budget_resource_name c.dynamic_search_ads_setting = client.resource.dynamic_search_ads_setting do |s| s.domain_name = "example.com" s.language_code = "en" end # Declare whether or not this campaign serves political ads targeting the EU. # Valid values are CONTAINS_EU_POLITICAL_ADVERTISING and # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING. c.contains_eu_political_advertising = :DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING c.start_date_time = DateTime.parse((Date.today + 1).to_s).strftime('%Y%m%d %H:%M:%S') c.end_date_time = DateTime.parse(Date.today.next_year.to_s).strftime('%Y%m%d %H:%M:%S') end operation = client.operation.create_resource.campaign(campaign) response = client.service.campaign.mutate_campaigns( customer_id: customer_id, operations: [operation], ) puts("Created campaign with ID: #{response.results.first.resource_name}") response.results.first.resource_name end
Perl
sub create_campaign { my ($api_client, $customer_id, $campaign_budget_resource_name) = @_; # Create a campaign. my $campaign = Google::Ads::GoogleAds::V25::Resources::Campaign->new({ name => "Interplanetary Cruise #" . uniqid(), advertisingChannelType => SEARCH, status => Google::Ads::GoogleAds::V25::Enums::CampaignStatusEnum::PAUSED, manualCpc => Google::Ads::GoogleAds::V25::Common::ManualCpc->new(), campaignBudget => $campaign_budget_resource_name, # Enable the campaign for DSAs. dynamicSearchAdsSetting => Google::Ads::GoogleAds::V25::Resources::DynamicSearchAdsSetting->new({ domainName => "example.com", languageCode => "en" } ), # Optional: Set the start and end datetimes for the campaign, beginning one day from # now and ending a month from now. startDateTime => strftime("%Y%m%d 00:00:00", localtime(time + 60 * 60 * 24)), endDateTime => strftime("%Y%m%d 23:59:59", localtime(time + 60 * 60 * 24 * 30)), # Declare whether or not this campaign serves political ads targeting the EU. # Valid values are CONTAINS_EU_POLITICAL_ADVERTISING and # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING. containsEuPoliticalAdvertising => DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING }); # Create a campaign operation. my $campaign_operation = Google::Ads::GoogleAds::V25::Services::CampaignService::CampaignOperation-> new({create => $campaign}); # Add the campaign. my $campaigns_response = $api_client->CampaignService()->mutate({ customerId => $customer_id, operations => [$campaign_operation]}); my $campaign_resource_name = $campaigns_response->{results}[0]{resourceName}; printf "Created campaign '%s'.\n", $campaign_resource_name; return $campaign_resource_name; }
curl
Anzeigengruppe erstellen
Wenn Sie DSA-Funktionen verwenden möchten, erstellen Sie ein AdGroup, wobei das Feld type auf SEARCH_DYNAMIC_ADS gesetzt ist.
Für diesen Anzeigengruppentyp gelten die folgenden Einschränkungen:
- Dieser Anzeigengruppentyp kann nur Suchkampagnen hinzugefügt werden.
- Ein gültiges
DynamicSearchAdsSettingmuss auf Kampagnenebene festgelegt werden, bevor die Anzeigengruppe hinzugefügt wird. Andernfalls gibt die API einenAdGroupErrormitCANNOT_ADD_ADGROUP_OF_TYPE_DSA_TO_CAMPAIGN_WITHOUT_DSA_SETTINGzurück. - Einzuschließende Keywords sind für diesen Anzeigengruppentyp nicht zulässig. Zielgruppen, dynamische Anzeigenziele (
webpage) und auszuschließende Keywords sind zulässig. - Wie bei allen Anzeigengruppen kann das Feld
typenach dem Erstellen nicht mehr geändert werden. - In dieser Anzeigengruppe sind nur Anzeigenformate zulässig, die mit dynamischen Suchanzeigen zusammenhängen.
Das folgende Codebeispiel zeigt, wie Sie eine SEARCH_DYNAMIC_ADS-Anzeigengruppe erstellen:
Java
private static String addAdGroup( GoogleAdsClient googleAdsClient, long customerId, String campaignResourceName) { // Creates the ad group. AdGroup adGroup = AdGroup.newBuilder() .setName("Earth to Mars Cruises #" + getPrintableDateTime()) .setCampaign(campaignResourceName) .setType(AdGroupType.SEARCH_DYNAMIC_ADS) .setStatus(AdGroupStatus.PAUSED) .setTrackingUrlTemplate("http://tracker.examples.com/traveltracker/{escapedlpurl}") .setCpcBidMicros(50_000) .build(); // Creates the operation. AdGroupOperation operation = AdGroupOperation.newBuilder().setCreate(adGroup).build(); // Creates the ad group service client. try (AdGroupServiceClient adGroupServiceClient = googleAdsClient.getLatestVersion().createAdGroupServiceClient()) { MutateAdGroupsResponse response = adGroupServiceClient.mutateAdGroups( Long.toString(customerId), ImmutableList.of(operation)); String adGroupResourceName = response.getResults(0).getResourceName(); // Displays the results. System.out.printf("Added ad group with resource name '%s'.%n", adGroupResourceName); return adGroupResourceName; } }
C#
private static string AddAdGroup(GoogleAdsClient client, long customerId, string campaignResourceName) { // Get the AdGroupService. AdGroupServiceClient adGroupService = client.GetService(Services.V25.AdGroupService); // Create the ad group. AdGroup adGroup = new AdGroup() { Name = "Earth to Mars Cruises #" + ExampleUtilities.GetRandomString(), Campaign = campaignResourceName, Type = AdGroupType.SearchDynamicAds, Status = AdGroupStatus.Paused, TrackingUrlTemplate = "http://tracker.examples.com/traveltracker/{escapedlpurl}", CpcBidMicros = 50_000 }; // Create the operation. AdGroupOperation operation = new AdGroupOperation() { Create = adGroup }; // Add the ad group. MutateAdGroupsResponse response = adGroupService.MutateAdGroups(customerId.ToString(), new AdGroupOperation[] { operation }); // Display the results. string adGroupResourceName = response.Results[0].ResourceName; Console.WriteLine($"Added ad group with resource name '{adGroupResourceName}'."); return adGroupResourceName; }
PHP
private static function createAdGroup( GoogleAdsClient $googleAdsClient, int $customerId, string $campaignResourceName ) { // Constructs an ad group and sets an optional CPC value. $adGroup = new AdGroup( [ 'name' => 'Earth to Mars Cruises #' . Helper::getPrintableDatetime(), 'campaign' => $campaignResourceName, 'status' => AdGroupStatus::PAUSED, 'type' => AdGroupType::SEARCH_DYNAMIC_ADS, 'tracking_url_template' => 'http://tracker.examples.com/traveltracker/{escapedlpurl}', 'cpc_bid_micros' => 10000000 ] ); // Creates an ad group operation. $adGroupOperation = new AdGroupOperation(); $adGroupOperation->setCreate($adGroup); // Issues a mutate request to add the ad groups. $adGroupServiceClient = $googleAdsClient->getAdGroupServiceClient(); /** * @var MutateAdGroupsResponse $adGroupResponse */ $adGroupResponse = $adGroupServiceClient->mutateAdGroups( MutateAdGroupsRequest::build($customerId, [$adGroupOperation]) ); $adGroupResourceName = $adGroupResponse->getResults()[0]->getResourceName(); printf("Added ad group named '%s'.%s", $adGroupResourceName, PHP_EOL); return $adGroupResourceName; }
Python
def create_ad_group( client: GoogleAdsClient, customer_id: str, campaign_resource_name: str ) -> str: """Creates a Dynamic Search Ad Group under the given Campaign. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID str. campaign_resource_name: a resource_name str for a Campaign. Returns: A resource_name str for the newly created Ad Group. """ # Retrieve a new ad group operation object. ad_group_operation: AdGroupOperation = client.get_type("AdGroupOperation") # Create an ad group. ad_group: AdGroup = ad_group_operation.create # Required: set the ad group's type to Dynamic Search Ads. ad_group.type_ = client.enums.AdGroupTypeEnum.SEARCH_DYNAMIC_ADS ad_group.name = f"Earth to Mars Cruises {uuid4()}" ad_group.campaign = campaign_resource_name ad_group.status = client.enums.AdGroupStatusEnum.PAUSED # Recommended: set a tracking URL template for your ad group if you want to # use URL tracking software. ad_group.tracking_url_template = ( "http://tracker.example.com/traveltracker/{escapedlpurl}" ) # Optional: Set the ad group bid value. ad_group.cpc_bid_micros = 10000000 # Retrieve the ad group service. ad_group_service: AdGroupServiceClient = client.get_service( "AdGroupService" ) # Issues a mutate request to add the ad group. response: MutateAdGroupsResponse = ad_group_service.mutate_ad_groups( customer_id=customer_id, operations=[ad_group_operation] ) resource_name: str = response.results[0].resource_name print(f'Created Ad Group with resource_name: "{resource_name}"')
Ruby
def create_ad_group(client, customer_id, campaign_resource_name) ad_group = client.resource.ad_group do |ag| ag.type = :SEARCH_DYNAMIC_ADS ag.name = "Earth to Mars Cruises #{(Time.now.to_f * 1000).to_i}" ag.campaign = campaign_resource_name ag.status = :PAUSED ag.tracking_url_template = "http://tracker.example.com/traveltracker/{escapedlpurl}" ag.cpc_bid_micros = 3_000_000 end operation = client.operation.create_resource.ad_group(ad_group) response = client.service.ad_group.mutate_ad_groups( customer_id: customer_id, operations: [operation], ) puts("Created ad group with ID: #{response.results.first.resource_name}") response.results.first.resource_name end
Perl
sub create_ad_group { my ($api_client, $customer_id, $campaign_resource_name) = @_; # Construct an ad group and set an optional CPC value. my $ad_group = Google::Ads::GoogleAds::V25::Resources::AdGroup->new({ name => "Earth to Mars Cruises #" . uniqid(), campaign => $campaign_resource_name, status => Google::Ads::GoogleAds::V25::Enums::AdGroupStatusEnum::PAUSED, type => SEARCH_DYNAMIC_ADS, trackingUrlTemplate => "http://tracker.examples.com/traveltracker/{escapedlpurl}", cpcBidMicros => 3000000 }); # Create an ad group operation. my $ad_group_operation = Google::Ads::GoogleAds::V25::Services::AdGroupService::AdGroupOperation-> new({create => $ad_group}); # Add the ad group. my $ad_groups_response = $api_client->AdGroupService()->mutate({ customerId => $customer_id, operations => [$ad_group_operation]}); my $ad_group_resource_name = $ad_groups_response->{results}[0]{resourceName}; printf "Created ad group '%s'.\n", $ad_group_resource_name; return $ad_group_resource_name; }
curl
Dynamische Suchanzeige erstellen
Um die DSA zu erstellen, instanziieren Sie ein ExpandedDynamicSearchAdInfo-Objekt und legen die folgenden Felder fest:
- Erforderlich:
description - Optional:
description2
Der Anzeigentitel, die angezeigte URL und die finale URL der Anzeige werden zum Zeitpunkt der Auslieferung automatisch anhand von domänenspezifischen Informationen generiert, die vom DynamicSearchAdsSetting auf Kampagnenebene bereitgestellt werden.
Java
private static void addExpandedDSA( GoogleAdsClient googleAdsClient, long customerId, String adGroupResourceName) { // Creates an ad group ad. AdGroupAd adGroupAd = AdGroupAd.newBuilder() .setAdGroup(adGroupResourceName) .setStatus(AdGroupAdStatus.PAUSED) // Sets the ad as an expanded dynamic search ad .setAd( Ad.newBuilder() .setExpandedDynamicSearchAd( ExpandedDynamicSearchAdInfo.newBuilder() .setDescription("Buy tickets now!") .build()) .build()) .build(); // Creates the operation. AdGroupAdOperation operation = AdGroupAdOperation.newBuilder().setCreate(adGroupAd).build(); // Creates the ad group ad service client. try (AdGroupAdServiceClient adGroupAdServiceClient = googleAdsClient.getLatestVersion().createAdGroupAdServiceClient()) { // Adds the dynamic search ad. MutateAdGroupAdsResponse response = adGroupAdServiceClient.mutateAdGroupAds( Long.toString(customerId), ImmutableList.of(operation)); // Displays the response. System.out.printf( "Added ad group ad with resource name '%s'.%n", response.getResults(0).getResourceName()); } }
C#
private static void AddExpandedDSA(GoogleAdsClient client, long customerId, string adGroupResourceName) { // Get the AdGroupAdService. AdGroupAdServiceClient adGroupAdService = client.GetService(Services.V25.AdGroupAdService); // Create an ad group ad. AdGroupAd adGroupAd = new AdGroupAd() { AdGroup = adGroupResourceName, Status = AdGroupAdStatus.Paused, // Set the ad as an expanded dynamic search ad. Ad = new Ad() { ExpandedDynamicSearchAd = new ExpandedDynamicSearchAdInfo() { Description = "Buy tickets now!" } } }; // Create the operation. AdGroupAdOperation operation = new AdGroupAdOperation() { Create = adGroupAd }; // Add the dynamic search ad. MutateAdGroupAdsResponse response = adGroupAdService.MutateAdGroupAds( customerId.ToString(), new AdGroupAdOperation[] { operation }); // Display the response. Console.WriteLine($"Added ad group ad with resource name " + $"'{response.Results[0].ResourceName}'."); }
PHP
private static function createExpandedDSA( GoogleAdsClient $googleAdsClient, int $customerId, string $adGroupResourceName ) { $adGroupAd = new AdGroupAd( [ 'ad_group' => $adGroupResourceName, 'status' => AdGroupAdStatus::PAUSED, 'ad' => new Ad( [ 'expanded_dynamic_search_ad' => new ExpandedDynamicSearchAdInfo( [ 'description' => 'Buy tickets now!' ] ) ] ) ] ); $adGroupAdOperation = new AdGroupAdOperation(); $adGroupAdOperation->setCreate($adGroupAd); // Issues a mutate request to add the ad group ads. $adGroupAdServiceClient = $googleAdsClient->getAdGroupAdServiceClient(); /** * @var MutateAdGroupAdsResponse $adGroupAdResponse */ $adGroupAdResponse = $adGroupAdServiceClient->mutateAdGroupAds( MutateAdGroupAdsRequest::build($customerId, [$adGroupAdOperation]) ); $adGroupAdResourceName = $adGroupAdResponse->getResults()[0]->getResourceName(); printf("Added ad group ad named '%s'.%s", $adGroupAdResourceName, PHP_EOL); return $adGroupAdResourceName; }
Python
def create_expanded_dsa( client: GoogleAdsClient, customer_id: str, ad_group_resource_name: str ) -> None: """Creates a dynamic search ad under the given ad group. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID str. ad_group_resource_name: a resource_name str for an Ad Group. """ # Retrieve a new ad group ad operation object. ad_group_ad_operation: AdGroupAdOperation = client.get_type( "AdGroupAdOperation" ) # Create and expanded dynamic search ad. This ad will have its headline, # display URL and final URL auto-generated at serving time according to # domain name specific information provided by DynamicSearchAdSetting at # the campaign level. ad_group_ad: AdGroupAd = ad_group_ad_operation.create # Optional: set the ad status. ad_group_ad.status = client.enums.AdGroupAdStatusEnum.PAUSED # Set the ad description. ad_group_ad.ad.expanded_dynamic_search_ad.description = "Buy tickets now!" ad_group_ad.ad_group = ad_group_resource_name # Retrieve the ad group ad service. ad_group_ad_service: AdGroupAdServiceClient = client.get_service( "AdGroupAdService" ) # Submit the ad group ad operation to add the ad group ad. response: MutateAdGroupAdsResponse = ( ad_group_ad_service.mutate_ad_group_ads( customer_id=customer_id, operations=[ad_group_ad_operation] ) ) resource_name: str = response.results[0].resource_name print(f'Created Ad Group Ad with resource_name: "{resource_name}"')
Ruby
def create_expanded_dsa(client, customer_id, ad_group_resource_name) ad_group_ad = client.resource.ad_group_ad do |aga| aga.status = :PAUSED aga.ad = client.resource.ad do |ad| ad.expanded_dynamic_search_ad = client.resource.expanded_dynamic_search_ad_info do |info| info.description = "Buy tickets now!" end end aga.ad_group = ad_group_resource_name end operation = client.operation.create_resource.ad_group_ad(ad_group_ad) response = client.service.ad_group_ad.mutate_ad_group_ads( customer_id: customer_id, operations: [operation], ) puts("Created ad group ad with ID: #{response.results.first.resource_name}") end
Perl
sub create_expanded_dsa { my ($api_client, $customer_id, $ad_group_resource_name) = @_; # Create an ad group ad. my $ad_group_ad = Google::Ads::GoogleAds::V25::Resources::AdGroupAd->new({ adGroup => $ad_group_resource_name, status => Google::Ads::GoogleAds::V25::Enums::AdGroupAdStatusEnum::PAUSED, ad => Google::Ads::GoogleAds::V25::Resources::Ad->new({ expandedDynamicSearchAd => Google::Ads::GoogleAds::V25::Common::ExpandedDynamicSearchAdInfo-> new({ description => "Buy tickets now!" })})}); # Create an ad group ad operation. my $ad_group_ad_operation = Google::Ads::GoogleAds::V25::Services::AdGroupAdService::AdGroupAdOperation ->new({create => $ad_group_ad}); # Add the ad group ad. my $ad_group_ads_response = $api_client->AdGroupAdService()->mutate({ customerId => $customer_id, operations => [$ad_group_ad_operation]}); my $ad_group_ad_resource_name = $ad_group_ads_response->{results}[0]{resourceName}; printf "Created ad group ad '%s'.\n", $ad_group_ad_resource_name; return $ad_group_ad_resource_name; }
curl
Da final_urls dynamisch von Google Ads berechnet wird, dürfen Sie final_urls nicht für das übergeordnete Ad festlegen, wenn Sie eine dynamische Suchanzeige erstellen. Wenn Sie Software für das URL-Tracking verwenden möchten, können Sie Tracking-Vorlagen mit dem Feld tracking_url_template für das übergeordnete Ad-Objekt (Ad.tracking_url_template, nicht ExpandedDynamicSearchAdInfo) oder auf der Ebene AdGroup (wie im vorherigen Anzeigengruppen-Snippet gezeigt) oder Campaign konfigurieren. Wenn Sie dieses Feld angeben, fügen Sie einen der folgenden ValueTrack-Parameter ein, damit Google Ads die entsprechende finale URL einfügen kann:
| Parameter | Erklärung |
|---|---|
{unescapedlpurl} |
Nicht maskierte Landingpage-URL – verwenden Sie diese, wenn Sie Abfrageparameter am Ende anhängen, z. B.:
|
{escapedlpurl} |
Escaped (URL-codierte) Landingpage-URL – verwenden Sie diese, wenn Sie über einen Drittanbieter-Tracker weiterleiten, z. B.:
|
{lpurlpath} |
Nur der Pfad und die Suchparameter aus der berechneten URL, z. B.:
|
{lpurl} |
Die Zeichen |
In Java legen Sie beispielsweise tracking_url_template für den Ad-Builder fest:
adBuilder.setTrackingUrlTemplate(
"https://example.com/traveltracker/{escapedlpurl}");
Kriterien für dynamische Suchanzeigen angeben
Konfigurieren Sie schließlich Kriterien, mit denen die Auslieferung der dynamischen Suchanzeigen ausgelöst wird. Verwenden Sie dazu das Feld webpage von AdGroupCriterion (siehe das vollständige Beispiel zum Hinzufügen dynamischer Suchanzeigen). Legen Sie webpage auf ein WebpageInfo-Objekt mit einem erforderlichen criterion_name (erforderlich für CREATE und nicht zulässig für UPDATE) und bis zu drei conditions fest (werden bei der Auswertung logisch AND-verknüpft; eine leere conditions-Liste richtet sich auf alle Seiten der Website der Kampagne).
Diese conditions sind WebpageConditionInfo-Instanzen, die angeben, was in der in den Kampagneneinstellungen konfigurierten Domain mit einem operand, einem argument und einem optionalen operator (EQUALS oder CONTAINS) gefiltert oder abgeglichen werden soll. Sie können nach fünf Operanden-Typen filtern:
| WebpageConditionOperand | Beschreibung |
|---|---|
URL |
String, der mit einer Teil-URL einer Seite übereinstimmt |
CATEGORY |
String mit einer Kategorie, die genau mit der Kategorie der Seite übereinstimmen muss |
PAGE_TITLE |
String, der mit einem Teil des Seitentitels übereinstimmt |
PAGE_CONTENT |
Ein String, der mit Inhalten auf einer indexierten Seite übereinstimmt. |
CUSTOM_LABEL |
Ein String, der einer Targeting-Bedingung für ein benutzerdefiniertes Label für eine Webseite entspricht. Weitere Informationen finden Sie unter Einschlüsse von Ziel-URLs mit benutzerdefinierten Labels festlegen. |
Sie können beispielsweise ein Kriterium für Webseiten erstellen, das auf Seiten unter dem Pfad /children einer Urlaubswebsite (Bedingung URL) ausgerichtet wird, die auch „Sonderangebot“ im Titel enthalten (Bedingung PAGE_TITLE).
Websitekategorien entdecken
Sie können die Liste der DomainCategory-Objekte, die Google Ads für Ihre Website identifiziert, abrufen und filtern, indem Sie die domain_category-Ressource in GAQL abfragen.
Mit der folgenden GAQL-Abfrage werden die Domainkategorien für eine bestimmte Website und Kampagne abgerufen:
SELECT
domain_category.category,
domain_category.language_code,
domain_category.recommended_cpc_bid_micros
FROM domain_category
WHERE domain_category.domain = 'example.com'
AND campaign.id = campaign_id
Webseiten als Ziele ausschließen
Sie können auch AdGroupCriterionService verwenden, um negative webpage-Kriterien zu erstellen (indem Sie negative = true auf AdGroupCriterion festlegen). So können Sie beispielsweise Seiten mit einem bestimmten Titel ausschließen, die Sie in einer separaten Kampagne oder Anzeigengruppe verwalten.
Weitere Kriterien
Kampagnen und Anzeigengruppen für dynamische Suchanzeigen sind nicht auf Webseitenkriterien beschränkt. Sie können sie mit anderen Kriterientypen kombinieren, um die Ausrichtung zu optimieren. Verwenden Sie zusätzliche Kriterien jedoch mit Bedacht, da eine zu restriktive Ausrichtung die Effektivität der automatischen Ausrichtung von dynamischen Suchanzeigen verringern kann.