Empfehlungen können Ihre Kampagnen auf verschiedene Weise verbessern:
- Neue und relevante Funktionen vorstellen
- Budget besser nutzen – mit optimierten Geboten, Keywords und Anzeigen
- Gesamtleistung und Effizienz Ihrer Kampagnen steigern
Wenn Sie den Optimierungsfaktor erhöhen möchten, können Sie mit RecommendationService Empfehlungen abrufen und diese dann entsprechend übernehmen oder ablehnen. Sie können auch die automatische Anwendung von Empfehlungen abonnieren, indem Sie die RecommendationSubscriptionService verwenden.
Optimierungsfaktor
Der Optimierungsfaktor ist ein Schätzwert zur Leistungsfähigkeit Ihres Google Ads-Kontos und ist auf Customer- und Campaign-Ebene verfügbar.
Für customer- und campaign-Berichte sind optimierungsbezogene Messwerte verfügbar:
- Über das
metrics.optimization_score_urlwird ein Deeplink zum Konto bereitgestellt, über den Sie Informationen zu den entsprechenden Empfehlungen in der Google Ads-Benutzeroberfläche aufrufen können. - Der
metrics.optimization_score_upliftgibt an, um wie viel der Optimierungsfaktor steigen würde, wenn alle zugehörigen Empfehlungen übernommen werden. Es handelt sich um einen Schätzwert, der auf allen verfügbaren Empfehlungen insgesamt basiert, nicht nur auf der Summe der Anstiegswerte für jede Empfehlung.
Wenn Sie die zurückgegebenen Empfehlungen gruppieren und sortieren möchten, können Sie beide Messwerte mit segments.recommendation_type in Ihrer Abfrage nach Empfehlungstyp segmentieren.
Empfehlungstypen
In der folgenden Tabelle sind die Empfehlungstypen aufgeführt, die in der Google Ads API zum Abrufen, Anwenden und Ablehnen von Empfehlungen unterstützt werden. Wenn ein Konto in der Google Ads-Benutzeroberfläche Empfehlungstypen enthält, die in der API nicht unterstützt werden, können Sie metrics.optimization_score_url verwenden, um Nutzer direkt zur Seite „Empfehlungen“ in der Google Ads-Benutzeroberfläche weiterzuleiten, damit sie diese Empfehlungen prüfen und umsetzen können.
Vollständig unterstützte Empfehlungstypen
| RecommendationType | Beschreibung |
|---|---|
CAMPAIGN_BUDGET |
Durch das Budget eingeschränkte Kampagnen nachbessern |
KEYWORD |
Neue Keywords hinzufügen |
TEXT_AD |
Anzeigenvorschläge hinzufügen |
TARGET_CPA_OPT_IN |
Mit Ziel-CPA bieten |
MAXIMIZE_CONVERSIONS_OPT_IN |
Gebotsstrategie „Conversions maximieren“ verwenden |
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
Gebote mit „Conversion-Wert maximieren“ abgeben |
ENHANCED_CPC_OPT_IN |
Mit auto-optimiertem CPC bieten |
MAXIMIZE_CLICKS_OPT_IN |
Gebotsstrategie „Klicks maximieren“ verwenden |
OPTIMIZE_AD_ROTATION |
Optimierte Anzeigenrotation verwenden |
MOVE_UNUSED_BUDGET |
Nicht aufgebrauchtes Budget in eingeschränkte Budgets verschieben |
TARGET_ROAS_OPT_IN |
Gebote mit Ziel-ROAS abgeben |
FORECASTING_CAMPAIGN_BUDGET |
Kampagnen nachbessern, die voraussichtlich in Zukunft durch das Budget eingeschränkt sein werden |
RESPONSIVE_SEARCH_AD |
Neue responsive Suchanzeige hinzufügen |
MARGINAL_ROI_CAMPAIGN_BUDGET |
Kampagnenbudget anpassen, um den ROI zu erhöhen |
USE_BROAD_MATCH_KEYWORD |
Verwenden Sie weitgehend passende Keywords für Conversion-basierte Kampagnen mit automatischer Gebotseinstellung. |
RESPONSIVE_SEARCH_AD_ASSET |
Assets für responsive Suchanzeigen zu einer Anzeige hinzufügen |
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH |
Effektivität einer responsiven Suchanzeige verbessern |
DISPLAY_EXPANSION_OPT_IN |
Kampagne für die Displaynetzwerk-Aktivierung aktualisieren |
SEARCH_PARTNERS_OPT_IN |
Mit Google Suchnetzwerk-Partnern die Reichweite erhöhen |
CUSTOM_AUDIENCE_OPT_IN |
Benutzerdefinierte Zielgruppe erstellen |
IMPROVE_DEMAND_GEN_AD_STRENGTH |
Anzeigeneffektivität in Demand Gen-Kampagnen verbessern |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX |
Smarte Shopping-Kampagne auf Performance Max-Kampagne umstellen |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX |
Alte lokale Kampagne auf eine Performance Max-Kampagne umstellen |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX
|
Angebote, auf die mit Standard-Shopping-Kampagnen ausgerichtet wird, in bestehende Performance Max-Kampagnen migrieren |
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX
|
Dynamische Suchanzeigen zu Performance Max-Kampagnen migrieren |
PERFORMANCE_MAX_OPT_IN |
Performance Max-Kampagnen in Ihrem Konto erstellen |
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH |
Die Effektivität der Asset-Gruppe einer Performance Max-Kampagne auf „Sehr gut“ verbessern |
PERFORMANCE_MAX_FINAL_URL_OPT_IN |
Erweiterung der finalen URL für Ihre Performance Max-Kampagnen aktivieren |
RAISE_TARGET_CPA_BID_TOO_LOW |
Ziel-CPA erhöhen, wenn er zu niedrig ist und nur sehr wenige oder keine Conversions erzielt werden |
FORECASTING_SET_TARGET_ROAS |
Budget vor einem saisonalen Ereignis erhöhen, bei dem mit einem Anstieg der Zugriffszahlen zu rechnen ist, und Gebotsstrategie von „Conversion-Wert maximieren“ in „Ziel-ROAS“ ändern |
LEAD_FORM_ASSET |
Assets mit Lead-Formular einer Kampagne hinzufügen |
CALLOUT_ASSET |
Assets mit Zusatzinformationen auf Kampagnen- oder Kundenebene hinzufügen |
SITELINK_ASSET |
Sitelink-Assets auf Kampagnen- oder Kundenebene hinzufügen |
CALL_ASSET |
Anruf-Assets auf Kampagnen- oder Kundenebene hinzufügen |
SHOPPING_ADD_AGE_GROUP |
Fügen Sie das Attribut „Altersgruppe“ [age_group] zu Angeboten hinzu, die aufgrund einer fehlenden Altersgruppe herabgestuft wurden. |
SHOPPING_ADD_COLOR |
Fügen Sie Angeboten, die aufgrund einer fehlenden Farbe herabgestuft wurden, eine Farbe hinzu. |
SHOPPING_ADD_GENDER |
Fügen Sie Angeboten, die aufgrund eines fehlenden Geschlechts herabgestuft wurden, ein Geschlecht hinzu. |
SHOPPING_ADD_GTIN |
GTIN (Global Trade Item Number) für Angebote hinzufügen, die aufgrund einer fehlenden GTIN herabgestuft wurden |
SHOPPING_ADD_MORE_IDENTIFIERS |
Fügen Sie Angeboten, die aufgrund fehlender Kennzeichnungen herabgestuft wurden, weitere Kennzeichnungen hinzu. |
SHOPPING_ADD_SIZE |
Fügen Sie die Größe zu Angeboten hinzu, die aufgrund einer fehlenden Größe herabgestuft wurden. |
SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN |
Produkte hinzufügen, damit eine Kampagne ausgeliefert werden kann |
SHOPPING_FIX_DISAPPROVED_PRODUCTS |
Probleme mit abgelehnten Produkten beheben |
SHOPPING_TARGET_ALL_OFFERS |
Universelle Kampagne erstellen, die auf alle Angebote ausgerichtet ist |
SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT |
Probleme mit der Sperrung von Merchant Center-Konten beheben |
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING
|
Probleme mit Warnungen zur Sperrung von Merchant Center-Konten beheben |
DYNAMIC_IMAGE_EXTENSION_OPT_IN |
Dynamische Bilderweiterungen im Konto aktivieren |
RAISE_TARGET_CPA |
Ziel-CPA erhöhen |
LOWER_TARGET_ROAS |
Niedrigerer Ziel-ROAS |
FORECASTING_SET_TARGET_CPA |
Ziel-CPA für Kampagnen festlegen, für die noch keiner angegeben ist, bevor ein saisonales Ereignis stattfindet, bei dem mit steigenden Zugriffszahlen zu rechnen ist |
SET_TARGET_CPA |
Ziel-CPA für Kampagnen festlegen, für die keiner angegeben ist |
SET_TARGET_ROAS |
Ziel-ROAS für Kampagnen festlegen, für die kein Ziel-ROAS angegeben ist |
REFRESH_CUSTOMER_MATCH_LIST |
Kundenliste aktualisieren, die in den letzten 90 Tagen nicht aktualisiert wurde |
IMPROVE_GOOGLE_TAG_COVERAGE |
Google-Tag auf weiteren Seiten einfügen |
CAMPAIGN_SPECIFIC_APP_GOAL |
Kampagnenspezifisches App-Conversion-Zielvorhaben hinzufügen |
RAISE_TARGET_CPA_PERFORMANCE_BID_TOO_LOW |
Ziel-CPA erhöhen, wenn er für Suchkampagnen zu niedrig ist |
LOWER_TARGET_ROAS_PERFORMANCE_BID_TOO_LOW |
Ziel-ROAS senken, wenn er für Suchkampagnen zu niedrig ist |
RAISE_BUDGET_PERFORMANCE_TOO_LOW |
Erhöhen Sie das Budget, wenn es für Suchkampagnen zu niedrig ist. Verfügbar ab v26. Empfehlungsdetails werden in Recommendation.raise_budget_performance_too_low_recommendation zurückgegeben und mit ApplyRecommendationOperation.raise_budget_performance_too_low angewendet. |
KEYWORD_MATCH_TYPE (verworfen) |
Verworfen. Verwenden Sie stattdessen USE_BROAD_MATCH_KEYWORD. |
Empfehlungen abrufen
Wie die meisten anderen Entitäten in der Google Ads API werden Recommendation-Objekte mit dem GoogleAdsService.SearchStream und einer Abfrage in der Google Ads-Abfragesprache abgerufen.
Für jeden Empfehlungstyp werden Details in einem empfehlungsspezifischen Feld angegeben. Beispielsweise befinden sich die Details der Empfehlung CAMPAIGN_BUDGET im Feld campaign_budget_recommendation und sind in einem CampaignBudgetRecommendation-Objekt verpackt.
Alle empfehlungsspezifischen Felder finden Sie im Union-Feld recommendation.
Auswirkungen von Empfehlungen
Bei einigen Empfehlungstypen wird das Feld impact der Empfehlung ausgefüllt.
RecommendationImpact enthält eine Schätzung der Auswirkungen auf die Kontoleistung, die sich aus der Anwendung der Empfehlung ergeben. Die folgenden Empfehlungsmesswerte sind in den Feldern impact.base_metrics und impact.potential_metrics verfügbar:
impressionsclickscost_microsconversionsall_conversionsvideo_views
Auch wenn das Feld impact ausgefüllt ist, variiert die Verfügbarkeit von Messwerten unter anderem je nach Empfehlungs- und Kampagnentyp. Prüfen Sie generell, ob die einzelnen Messwerte für die Auswirkungen verfügbar sind, bevor Sie versuchen, sie zu verwenden.
Codebeispiel
Im folgenden Beispielcode werden alle verfügbaren und abgelehnten Empfehlungen des Typs KEYWORD aus einem Konto abgerufen und einige ihrer Details ausgegeben:
Java
try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient(); RecommendationServiceClient recommendationServiceClient = googleAdsClient.getLatestVersion().createRecommendationServiceClient()) { // Creates a query that retrieves keyword recommendations. String query = "SELECT recommendation.resource_name, " + " recommendation.campaign, " + " recommendation.keyword_recommendation " + "FROM recommendation " + "WHERE recommendation.type = KEYWORD"; // Constructs the SearchGoogleAdsStreamRequest. SearchGoogleAdsStreamRequest request = SearchGoogleAdsStreamRequest.newBuilder() .setCustomerId(Long.toString(customerId)) .setQuery(query) .build(); // Issues the search stream request to detect keyword recommendations that exist for the // customer account. ServerStream<SearchGoogleAdsStreamResponse> stream = googleAdsServiceClient.searchStreamCallable().call(request); // Creates apply operations for all the recommendations found. List<ApplyRecommendationOperation> applyRecommendationOperations = new ArrayList<>(); for (SearchGoogleAdsStreamResponse response : stream) { for (GoogleAdsRow googleAdsRow : response.getResultsList()) { Recommendation recommendation = googleAdsRow.getRecommendation(); System.out.printf( "Keyword recommendation '%s' was found for campaign '%s'%n", recommendation.getResourceName(), recommendation.getCampaign()); KeywordInfo keyword = recommendation.getKeywordRecommendation().getKeyword(); System.out.printf("\tKeyword = '%s'%n", keyword.getText()); System.out.printf("\tMatch type = '%s'%n", keyword.getMatchType()); // Creates an ApplyRecommendationOperation that will apply this recommendation, and adds // it to the list of operations. applyRecommendationOperations.add(buildRecommendationOperation(recommendation)); } }
C#
// Get the GoogleAdsServiceClient. GoogleAdsServiceClient googleAdsService = client.GetService( Services.V25.GoogleAdsService); // Creates a query that retrieves keyword recommendations. string query = "SELECT recommendation.resource_name, " + "recommendation.campaign, recommendation.keyword_recommendation " + "FROM recommendation WHERE " + $"recommendation.type = KEYWORD"; List<ApplyRecommendationOperation> operations = new List<ApplyRecommendationOperation>(); try { // Issue a search request. googleAdsService.SearchStream(customerId.ToString(), query, delegate (SearchGoogleAdsStreamResponse resp) { Console.WriteLine($"Found {resp.Results.Count} recommendations."); foreach (GoogleAdsRow googleAdsRow in resp.Results) { Recommendation recommendation = googleAdsRow.Recommendation; Console.WriteLine("Keyword recommendation " + $"{recommendation.ResourceName} was found for campaign " + $"{recommendation.Campaign}."); if (recommendation.KeywordRecommendation != null) { KeywordInfo keyword = recommendation.KeywordRecommendation.Keyword; Console.WriteLine($"Keyword = {keyword.Text}, type = " + "{keyword.MatchType}"); } operations.Add( BuildApplyRecommendationOperation(recommendation.ResourceName) ); } } ); } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; }
PHP
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); // Creates a query that retrieves keyword recommendations. $query = 'SELECT recommendation.resource_name, recommendation.campaign, ' . 'recommendation.keyword_recommendation ' . 'FROM recommendation ' . 'WHERE recommendation.type = KEYWORD '; // Issues a search request to detect keyword recommendations that exist for the // customer account. $response = $googleAdsServiceClient->search(SearchGoogleAdsRequest::build($customerId, $query)); $operations = []; // Iterates over all rows in all pages and prints the requested field values for // the recommendation in each row. foreach ($response->iterateAllElements() as $googleAdsRow) { /** @var GoogleAdsRow $googleAdsRow */ $recommendation = $googleAdsRow->getRecommendation(); printf( "Keyword recommendation with resource name '%s' was found for campaign " . "with resource name '%s':%s", $recommendation->getResourceName(), $recommendation->getCampaign(), PHP_EOL ); if (!is_null($recommendation->getKeywordRecommendation())) { $keyword = $recommendation->getKeywordRecommendation()->getKeyword(); printf( "\tKeyword = '%s'%s\ttype = '%s'%s", $keyword->getText(), PHP_EOL, KeywordMatchType::name($keyword->getMatchType()), PHP_EOL ); } // Creates an ApplyRecommendationOperation that will be used to apply this // recommendation, and adds it to the list of operations. $operations[] = self::buildRecommendationOperation($recommendation->getResourceName()); }
Python
googleads_service = client.get_service("GoogleAdsService") query: str = """ SELECT recommendation.campaign, recommendation.keyword_recommendation FROM recommendation WHERE recommendation.type = KEYWORD""" # Detects keyword recommendations that exist for the customer account. response: Iterable[GoogleAdsRow] = googleads_service.search( customer_id=customer_id, query=query ) operations: List[ApplyRecommendationOperation] = [] for row in response: recommendation = row.recommendation print( f"Keyword recommendation ('{recommendation.resource_name}') " f"was found for campaign '{recommendation.campaign}." ) keyword = recommendation.keyword_recommendation.keyword print( f"\tKeyword = '{keyword.text}'\n" f"\tType = '{keyword.match_type}'" ) # Create an ApplyRecommendationOperation that will be used to apply # this recommendation, and add it to the list of operations. operations.append( build_recommendation_operation(client, recommendation.resource_name) )
Ruby
query = <<~QUERY SELECT recommendation.resource_name, recommendation.campaign, recommendation.keyword_recommendation FROM recommendation WHERE recommendation.type = KEYWORD QUERY google_ads_service = client.service.google_ads response = google_ads_service.search( customer_id: customer_id, query: query, ) operations = response.each do |row| recommendation = row.recommendation puts "Keyword recommendation ('#{recommendation.resource_name}') was found for "\ "campaign '#{recommendation.campaign}'." if recommendation.keyword_recommendation keyword = recommendation.keyword_recommendation.keyword puts "\tKeyword = '#{keyword.text}'" puts "\ttype = '#{keyword.match_type}'" end build_recommendation_operation(client, recommendation.resource_name) end
Perl
# Create the search query. my $search_query = "SELECT recommendation.resource_name, " . "recommendation.campaign, recommendation.keyword_recommendation " . "FROM recommendation " . "WHERE recommendation.type = KEYWORD"; # Get the GoogleAdsService. my $google_ads_service = $api_client->GoogleAdsService(); my $search_stream_handler = Google::Ads::GoogleAds::Utils::SearchStreamHandler->new({ service => $google_ads_service, request => { customerId => $customer_id, query => $search_query }}); # Create apply operations for all the recommendations found. my $apply_recommendation_operations = (); $search_stream_handler->process_contents( sub { my $google_ads_row = shift; my $recommendation = $google_ads_row->{recommendation}; printf "Keyword recommendation '%s' was found for campaign '%s'.\n", $recommendation->{resourceName}, $recommendation->{campaign}; my $keyword = $recommendation->{keywordRecommendation}{keyword}; printf "\tKeyword = '%s'\n", $keyword->{text}; printf "\tMatch type = '%s'\n", $keyword->{matchType}; # Creates an ApplyRecommendationOperation that will apply this recommendation, and adds # it to the list of operations. push @$apply_recommendation_operations, build_recommendation_operation($recommendation); });
curl
# Gets keyword recommendations. # # Variables: # API_VERSION, # CUSTOMER_ID, # MANAGER_CUSTOMER_ID, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:search" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "query": " SELECT recommendation.campaign, recommendation.keyword_recommendation FROM recommendation WHERE recommendation.type = KEYWORD " } EOF
Maßnahmen ergreifen
Jede abgerufene Empfehlung kann angewendet oder abgelehnt werden.
Je nach Empfehlungstyp können sich Empfehlungen täglich oder sogar mehrmals am Tag ändern. In diesem Fall kann das resource_name eines Empfehlungsobjekts nach dem Abrufen der Empfehlung veraltet sein.
Es empfiehlt sich, Empfehlungen kurz nach dem Abrufen umzusetzen.
Empfehlungen übernehmen
Sie können aktive oder verworfene Empfehlungen mit der Methode ApplyRecommendation der RecommendationService anwenden.
Für Empfehlungstypen können Pflicht- oder optionale Parameter festgelegt werden. Die meisten Empfehlungen enthalten empfohlene Werte, die standardmäßig verwendet werden.
Das Festlegen von Konten für die automatische Anwendung von Empfehlungen wird nicht für alle Empfehlungstypen unterstützt. Sie können jedoch ein ähnliches Verhalten für die Empfehlungstypen implementieren, die von der Google Ads API vollständig unterstützt werden.
Weitere Informationen finden Sie im DetectAndApplyRecommendations-Codebeispiel.
Verwenden Sie das Vereinigungsfeld apply_parameters von ApplyRecommendationOperation, um Empfehlungen mit bestimmten Parameterwerten anzuwenden. Für jeden geeigneten Empfehlungstyp gibt es ein eigenes Feld. Für Empfehlungstypen, die nicht im Feld apply_parameters aufgeführt sind, werden diese Parameterwerte nicht verwendet.
Codebeispiel
Im folgenden Code wird gezeigt, wie Sie das ApplyRecommendationOperation-Objekt erstellen und die empfohlenen Werte überschreiben, wenn Sie sie durch eigene ersetzen möchten.
Java
/** Creates and returns an ApplyRecommendationOperation to apply the given recommendation. */ private ApplyRecommendationOperation buildRecommendationOperation(Recommendation recommendation) { // If you have a recommendation ID instead of a resource name, you can create a resource name // like this: // String resourceName = ResourceNames.recommendation(customerId, recommendationId); // Creates a builder to construct the operation. Builder operationBuilder = ApplyRecommendationOperation.newBuilder(); // Each recommendation type has optional parameters to override the recommended values. Below is // an example showing how to override a recommended ad when a TextAdRecommendation is applied. // operationBuilder.getTextAdBuilder().getAdBuilder().setResourceName("INSERT_AD_RESOURCE_NAME"); // Sets the operation's resource name to the resource name of the recommendation to apply. operationBuilder.setResourceName(recommendation.getResourceName()); return operationBuilder.build(); }
C#
private ApplyRecommendationOperation BuildApplyRecommendationOperation( string recommendationResourceName ) { // If you have a recommendation_id instead of the resource_name you can create a // resource name from it like this: // string recommendationResourceName = // ResourceNames.Recommendation(customerId, recommendationId) // Each recommendation type has optional parameters to override the recommended values. // This is an example to override a recommended ad when a TextAdRecommendation is // applied. // For details, please read // https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation. /* Ad overridingAd = new Ad() { Id = "INSERT_AD_ID_AS_LONG_HERE" }; applyRecommendationOperation.TextAd = new TextAdParameters() { Ad = overridingAd }; */ ApplyRecommendationOperation applyRecommendationOperation = new ApplyRecommendationOperation() { ResourceName = recommendationResourceName }; return applyRecommendationOperation; }
PHP
private static function buildRecommendationOperation( string $recommendationResourceName ): ApplyRecommendationOperation { // If you have a recommendation_id instead of the resource name, you can create a resource // name from it like this: /* $recommendationResourceName = ResourceNames::forRecommendation($customerId, $recommendationId); */ // Each recommendation type has optional parameters to override the recommended values. // This is an example to override a recommended ad when a TextAdRecommendation is applied. // For details, please read // https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation. /* $overridingAd = new Ad([ 'id' => 'INSERT_AD_ID_AS_INTEGER_HERE' ]); $applyRecommendationOperation->setTextAd(new TextAdParameters(['ad' => $overridingAd])); */ // Issues a mutate request to apply the recommendation. $applyRecommendationOperation = new ApplyRecommendationOperation(); $applyRecommendationOperation->setResourceName($recommendationResourceName); return $applyRecommendationOperation; }
Python
def build_recommendation_operation( client: GoogleAdsClient, recommendation: str ) -> ApplyRecommendationOperation: """Creates a ApplyRecommendationOperation to apply the given recommendation. Args: client: an initialized GoogleAdsClient instance. recommendation: a resource name for the recommendation to be applied. """ # If you have a recommendation ID instead of a resource name, you can create # a resource name like this: # # googleads_service = client.get_service("GoogleAdsService") # resource_name = googleads_service.recommendation_path( # customer_id, recommendation.id # ) operation: ApplyRecommendationOperation = client.get_type( "ApplyRecommendationOperation" ) # Each recommendation type has optional parameters to override the # recommended values. Below is an example showing how to override a # recommended ad when a TextAdRecommendation is applied. # # operation.text_ad.ad.resource_name = "INSERT_AD_RESOURCE_NAME" # # For more details, see: # https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation#apply_parameters operation.resource_name = recommendation return operation
Ruby
def build_recommendation_operation(client, recommendation) # If you have a recommendation_id instead of the resource_name # you can create a resource name from it like this: # recommendation_resource = # client.path.recommendation(customer_id, recommendation_id) operations = client.operation.apply_recommendation operations.resource_name = recommendation_resource # Each recommendation type has optional parameters to override the recommended # values. This is an example to override a recommended ad when a # TextAdRecommendation is applied. # # text_ad_parameters = client.resource.text_ad_parameters do |tap| # tap.ad = client.resource.ad do |ad| # ad.id = "INSERT_AD_ID_AS_INTEGER_HERE" # end # end # operation.text_ad = text_ad_parameters # # For more details, see: # https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation#apply_parameters return operation end
Perl
sub build_recommendation_operation { my ($recommendation) = @_; # If you have a recommendation ID instead of a resource name, you can create a resource # name like this: # my $recommendation_resource_name = # Google::Ads::GoogleAds::V25::Utils::ResourceNames::recommendation( # $customer_id, $recommendation_id); # Each recommendation type has optional parameters to override the recommended values. # Below is an example showing how to override a recommended ad when a TextAdRecommendation # is applied. # my $overriding_ad = Google::Ads::GoogleAds::V25::Resources::Ad->new({ # id => "INSERT_AD_ID_AS_INTEGER_HERE" # }); # my $text_ad_parameters = # Google::Ads::GoogleAds::V25::Services::RecommendationService::TextAdParameters # ->new({ad => $overriding_ad}); # $apply_recommendation_operation->{textAd} = $text_ad_parameters; # Create an apply recommendation operation. my $apply_recommendation_operation = Google::Ads::GoogleAds::V25::Services::RecommendationService::ApplyRecommendationOperation ->new({ resourceName => $recommendation->{resourceName}}); return $apply_recommendation_operation; }
curl
Im nächsten Beispiel wird ApplyRecommendation aufgerufen, um die Vorgänge zum Anwenden von Empfehlungen zu senden, die im vorherigen Code erstellt wurden.
Java
// Issues a mutate request to apply the recommendations. ApplyRecommendationResponse applyRecommendationsResponse = recommendationServiceClient.applyRecommendation( Long.toString(customerId), applyRecommendationOperations); for (ApplyRecommendationResult applyRecommendationResult : applyRecommendationsResponse.getResultsList()) { System.out.printf( "Applied recommendation with resource name: '%s'.%n", applyRecommendationResult.getResourceName()); }
C#
private void ApplyRecommendation(GoogleAdsClient client, long customerId, List<ApplyRecommendationOperation> operations) { // Get the RecommendationServiceClient. RecommendationServiceClient recommendationService = client.GetService( Services.V25.RecommendationService); ApplyRecommendationRequest applyRecommendationRequest = new ApplyRecommendationRequest() { CustomerId = customerId.ToString(), }; applyRecommendationRequest.Operations.AddRange(operations); ApplyRecommendationResponse response = recommendationService.ApplyRecommendation(applyRecommendationRequest); foreach (ApplyRecommendationResult result in response.Results) { Console.WriteLine("Applied a recommendation with resource name: " + result.ResourceName); } }
PHP
private static function applyRecommendations( GoogleAdsClient $googleAdsClient, int $customerId, array $operations ): void { // Issues a mutate request to apply the recommendations. $recommendationServiceClient = $googleAdsClient->getRecommendationServiceClient(); $response = $recommendationServiceClient->applyRecommendation( ApplyRecommendationRequest::build($customerId, $operations) ); foreach ($response->getResults() as $appliedRecommendation) { /** @var Recommendation $appliedRecommendation */ printf( "Applied a recommendation with resource name: '%s'.%s", $appliedRecommendation->getResourceName(), PHP_EOL ); } }
Python
def apply_recommendations( client: GoogleAdsClient, customer_id: str, operations: List[ApplyRecommendationOperation], ) -> None: """Applies a batch of recommendations. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. operations: a list of ApplyRecommendationOperation messages. """ # Issues a mutate request to apply the recommendations. recommendation_service = client.get_service("RecommendationService") response: ApplyRecommendationResult = ( recommendation_service.apply_recommendation( customer_id=customer_id, operations=operations ) ) for result in response.results: print( "Applied a recommendation with resource name: " f"'{result.resource_name}'." )
Ruby
def apply_recommendations(client, customer_id, operations) # Issues a mutate request to apply the recommendation. recommendation_service = client.service.recommendation response = recommendation_service.apply_recommendation( customer_id: customer_id, operations: [operations], ) response.results.each do |applied_recommendation| puts "Applied recommendation with resource name: '#{applied_recommendation.resource_name}'." end end
Perl
# Issue a mutate request to apply the recommendations. my $apply_recommendation_response = $api_client->RecommendationService()->apply({ customerId => $customer_id, operations => $apply_recommendation_operations }); foreach my $result (@{$apply_recommendation_response->{results}}) { printf "Applied recommendation with resource name: '%s'.\n", $result->{resourceName}; }
curl
# Applies a recommendation. # # Variables: # API_VERSION, # CUSTOMER_ID, # DEVELOPER_TOKEN, # MANAGER_CUSTOMER_ID, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. # # RECOMMENDATION_RESOURCE_NAME: The resource name of the recommendation to # apply, from the previous request. curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/recommendations:apply" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "operations": [ { "resourceName": "${RECOMMENDATION_RESOURCE_NAME}" } ] } EOF
Empfehlungen ablehnen
Sie können Empfehlungen mit RecommendationService ablehnen. Die Codestruktur ähnelt der Anwendung von Empfehlungen, aber Sie verwenden stattdessen DismissRecommendationOperation und RecommendationService.DismissRecommendation.
Bulk-Vorgänge und Fehlerbehandlung
Sowohl ApplyRecommendation als auch DismissRecommendation akzeptieren bis zu 100 Vorgänge pro Anfrage. Beachten Sie beim Senden mehrerer Vorgänge in einer einzelnen Anfrage Folgendes:
- Empfehlungstypen mischen:Standardmäßig (
partial_failure = false) müssen alle Vorgänge in einer einzelnen Anfrage auf denselben Empfehlungstyp ausgerichtet sein. Andernfalls gibt die APIRecommendationError.DIFFERENT_TYPES_NOT_SUPPORTEDzurück. Wenn Sie Empfehlungen verschiedener Typen in derselben Anfrage anwenden oder ablehnen möchten, legen Siepartial_failurein der Anfrage auftruefest, damit gültige Vorgänge unabhängig voneinander ausgeführt werden. - Lifecycle-Fehler:Da Empfehlungen dynamisch ausgewertet werden, kann sich der Status einer Empfehlung zwischen dem Abrufen und der Ausführung ändern. Wenn eine Empfehlung bereits angewendet, abgelehnt oder nicht mehr anwendbar ist, gibt die API
RECOMMENDATION_ALREADY_APPLIED,RECOMMENDATION_ALREADY_DISMISSEDoderRECOMMENDATION_INVALIDATEDinRecommendationErrorzurück.
Empfehlungen automatisch anwenden
Mit dem RecommendationSubscriptionService können Sie Empfehlungen eines bestimmten Typs automatisch anwenden lassen.
Wenn Sie einen bestimmten Empfehlungstyp abonnieren möchten, erstellen Sie ein RecommendationSubscription-Objekt, legen Sie das Feld type auf einen der unterstützten Empfehlungstypen fest und setzen Sie das Feld status auf ENABLED.
Empfehlungstypen, die im Abo enthalten sind
ENHANCED_CPC_OPT_INKEYWORDKEYWORD_MATCH_TYPELOWER_TARGET_ROASMAXIMIZE_CLICKS_OPT_INOPTIMIZE_AD_ROTATIONRAISE_TARGET_CPARESPONSIVE_SEARCH_ADRESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTHSEARCH_PARTNERS_OPT_INSET_TARGET_CPASET_TARGET_ROASTARGET_CPA_OPT_INTARGET_ROAS_OPT_INUSE_BROAD_MATCH_KEYWORD
Abos abrufen
Wenn Sie Informationen zu den Empfehlungsabos eines Kontos abrufen möchten, fragen Sie die Ressource recommendation_subscription ab.
Wenn Sie automatisch angewendete Änderungen sehen möchten, fragen Sie die Ressource change_event ab und filtern Sie change_event.client_type nach GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION.
Empfehlungen beim Erstellen von Kampagnen
Mit RecommendationService.GenerateRecommendationsRequest können Sie Empfehlungen für eine bestimmte Gruppe von Empfehlungstypen generieren lassen, während Sie eine Kampagne erstellen.
GenerateRecommendations akzeptiert als Eingabe eine Kundennummer, einen Werbekanaltyp, der entweder SEARCH oder PERFORMANCE_MAX sein muss, eine Liste der zu generierenden Empfehlungstypen und verschiedene Datenpunkte, die von den angegebenen Typen abhängen. Es gibt eine Liste von Recommendation-Objekten basierend auf den von Ihnen bereitgestellten Daten aus. Wenn nicht genügend Daten vorhanden sind, um eine Empfehlung für die angeforderte recommendation_types zu generieren, oder wenn sich die Kampagne bereits im empfohlenen Zustand befindet, enthält der Ergebnissatz keine Empfehlung für diesen Typ.
Achten Sie darauf, dass Ihre Anwendung den Fall verarbeitet, dass für die angeforderten Empfehlungstypen keine Empfehlungen zurückgegeben werden.
In der folgenden Tabelle werden die Empfehlungstypen beschrieben, die von GenerateRecommendations unterstützt werden, sowie die Felder, die Sie angeben müssen, um Empfehlungen für diesen Typ zu erhalten. Am besten senden Sie die GenerateRecommendations-Anfrage, nachdem alle Informationen zu den angeforderten Empfehlungstypen erfasst wurden. Weitere Informationen zu erforderlichen und optionalen Feldern, einschließlich verschachtelter Felder, finden Sie in der Referenzdokumentation.
| RecommendationType | Pflichtfelder | Optionale Felder |
|---|---|---|
CAMPAIGN_BUDGET |
Für Such- und Performance Max-Kampagnen sind die folgenden Felder erforderlich:
|
|
KEYWORD |
|
|
MAXIMIZE_CLICKS_OPT_IN |
|
|
MAXIMIZE_CONVERSIONS_OPT_IN |
|
|
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
|
|
SET_TARGET_CPA |
|
|
SET_TARGET_ROAS |
|
|
SITELINK_ASSET
Hinweis: Das zurückgegebene SitelinkAssetRecommendation
-Objekt enthält leere Listen. Wenn die GenerateRecommendations-Antwort ein SitelinkAssetRecommendation enthält, kann dies als Signal gewertet werden, der Kampagne mindestens ein Sitelink-Asset hinzuzufügen. |
|
|
TARGET_CPA_OPT_IN |
|
|
TARGET_ROAS_OPT_IN |
|
Beispiel für einen Nutzungsablauf
Angenommen, Ihr Unternehmen ist eine Werbeagentur, die Nutzern einen Workflow zur Kampagnenerstellung bietet, und Sie möchten Nutzern während dieses Workflows Vorschläge machen. Mit GenerateRecommendationsRequest können Sie Empfehlungen bei Bedarf generieren und in die Benutzeroberfläche zum Erstellen von Kampagnen einbinden.
Der Nutzungsablauf könnte so aussehen:
Ein Nutzer ruft Ihre Anwendung auf, um eine Performance Max-Kampagne zu erstellen.
Der Nutzer gibt im Rahmen der Kampagnenerstellung einige erste Informationen an. Sie geben beispielsweise Details zum Erstellen einer einzelnen
SitelinkAssetan und wählenTARGET_SPENDals Smart Bidding-Strategie aus.Sie senden eine
GenerateRecommendationsRequest, die die folgenden Felder festlegt:campaign_sitelink_count: Auf1festgelegt, also die Anzahl der Sitelink-Assets in der Kampagne, die gerade bearbeitet wird.bidding_info: Setzen Sie das verschachtelte Feldbidding_strategy_typeaufTARGET_SPEND.conversion_tracking_status: auf dieConversionTrackingStatusdieses Kunden festgelegt. Eine Anleitung zum Abrufen dieses Felds finden Sie im Startleitfaden für die Conversion-Verwaltung.Setzen Sie
recommendation_typesauf[SITELINK_ASSET, MAXIMIZE_CLICKS_OPT_IN].Setzen Sie
advertising_channel_typeaufPERFORMANCE_MAX.customer_id: Auf die ID des Kunden festgelegt, der die Kampagne erstellt.
Sie können die Empfehlungen in der
GenerateRecommendationsResponse– in diesem Fall eineSitelinkAssetRecommendationund eineMaximizeClicksOptInRecommendation– aufgreifen und dem Nutzer vorschlagen, indem Sie sie in der Benutzeroberfläche für die Kampagnenerstellung anzeigen. Wenn der Nutzer einen Vorschlag annimmt, können Sie ihn in die Anfrage zur Kampagnenerstellung einbeziehen, sobald der Nutzer den Ablauf zur Kampagnenerstellung abgeschlossen hat.