I suggerimenti possono migliorare le tue campagne in diversi modi:
- Presentare nuove funzionalità pertinenti
- Sfrutta al meglio il tuo budget con offerte, parole chiave e annunci migliorati
- Migliorare il rendimento e l'efficienza complessivi delle campagne
Per aumentare i punteggi di ottimizzazione, puoi utilizzare
RecommendationService per recuperare
i consigli e poi applicarli o ignorarli di conseguenza. Puoi anche
iscriverti per applicare automaticamente
i consigli utilizzando RecommendationSubscriptionService.
Punteggio di ottimizzazione
Il punteggio di ottimizzazione è una stima del livello di efficacia del rendimento del tuo account Google Ads ed è disponibile a livello di Customer e Campaign.
Sono disponibili metriche correlate all'ottimizzazione per i report customer e campaign:
metrics.optimization_score_urlfornisce un deep link all'account per visualizzare le informazioni sui consigli correlati nell'interfaccia utente di Google Ads.- L'
metrics.optimization_score_upliftindica di quanto aumenterebbe il punteggio di ottimizzazione se venissero applicati tutti i consigli correlati. Si tratta di una stima basata su tutti i consigli disponibili nel loro complesso, non solo sulla somma dei punteggi di aumento per ogni consiglio.
Per raggruppare e ordinare i suggerimenti restituiti, puoi segmentare entrambe queste metriche per tipo di suggerimento utilizzando segments.recommendation_type nella query.
Tipi di suggerimento
La seguente tabella elenca i tipi di consigli supportati nell'API Google Ads per il recupero, l'applicazione e l'eliminazione dei consigli. Se un account
ha tipi di consigli nell'UI di Google Ads che non sono supportati nell'API,
puoi utilizzare metrics.optimization_score_url per collegare gli utenti
direttamente alla pagina Consigli nell'UI di Google Ads per esaminare e agire in base
a questi consigli.
Tipi di consigli completamente supportati
| RecommendationType | Descrizione |
|---|---|
CAMPAIGN_BUDGET |
Correggere le campagne limitate dal budget |
KEYWORD |
Aggiungi nuove parole chiave |
TEXT_AD |
Aggiungi suggerimenti di annunci |
TARGET_CPA_OPT_IN |
Fai offerte con il CPA target |
MAXIMIZE_CONVERSIONS_OPT_IN |
Fare offerte con Massimizza le conversioni |
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
Fai offerte con Massimizza il valore di conversione |
ENHANCED_CPC_OPT_IN |
Fai offerte con il CPC ottimizzato |
MAXIMIZE_CLICKS_OPT_IN |
Fare offerte con Massimizza i clic |
OPTIMIZE_AD_ROTATION |
Utilizzare le rotazioni degli annunci ottimizzate |
MOVE_UNUSED_BUDGET |
Trasferisci i budget non utilizzati a quelli limitati |
TARGET_ROAS_OPT_IN |
Fai offerte con il ROAS target |
FORECASTING_CAMPAIGN_BUDGET |
Correggi le campagne che si prevede saranno limitate dal budget in futuro |
RESPONSIVE_SEARCH_AD |
Aggiungi un nuovo annuncio adattabile della rete di ricerca |
MARGINAL_ROI_CAMPAIGN_BUDGET |
Modificare il budget della campagna per aumentare il ROI |
USE_BROAD_MATCH_KEYWORD |
Utilizzare la corrispondenza generica per le campagne basate sulle conversioni con le offerte automatiche |
RESPONSIVE_SEARCH_AD_ASSET |
Aggiungi asset annuncio per gli annunci adattabili della rete di ricerca a un annuncio |
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH |
Migliora l'efficacia di un annuncio adattabile della rete di ricerca |
DISPLAY_EXPANSION_OPT_IN |
Aggiorna una campagna per utilizzare l'espansione alla Rete Display |
SEARCH_PARTNERS_OPT_IN |
Espandere la copertura con i partner di ricerca di Google |
CUSTOM_AUDIENCE_OPT_IN |
Crea un segmento di pubblico personalizzato |
IMPROVE_DEMAND_GEN_AD_STRENGTH |
Migliora l'efficacia degli annunci nelle campagne Demand Gen |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX |
Esegui l'upgrade di una campagna Shopping intelligente a una campagna Performance Max |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX |
Esegui l'upgrade di una campagna locale legacy a una campagna Performance Max |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX
|
Esegui la migrazione delle offerte targetizzate dalle campagne Shopping standard alle campagne Performance Max esistenti |
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX
|
Eseguire la migrazione degli annunci dinamici della rete di ricerca alle campagne Performance Max |
PERFORMANCE_MAX_OPT_IN |
Crea campagne Performance Max nel tuo account |
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH |
Migliora l'efficacia del gruppo di asset di una campagna Performance Max fino a ottenere una valutazione "Eccellente" |
PERFORMANCE_MAX_FINAL_URL_OPT_IN |
Attiva l'espansione dell'URL finale per le tue campagne Performance Max |
RAISE_TARGET_CPA_BID_TOO_LOW |
Aumenta il CPA target quando è troppo basso e non ci sono conversioni o ce ne sono pochissime |
FORECASTING_SET_TARGET_ROAS |
Aumenta il budget in anticipo rispetto a un evento stagionale per cui è previsto un aumento del traffico e cambia la strategia di offerta da Massimizza il valore di conversione a ROAS target |
LEAD_FORM_ASSET |
Aggiungere asset modulo per i lead a una campagna |
CALLOUT_ASSET |
Aggiungere asset callout a livello di campagna o cliente |
SITELINK_ASSET |
Aggiungere asset sitelink a livello di campagna o cliente |
CALL_ASSET |
Aggiungi asset di chiamata a livello di campagna o di cliente |
SHOPPING_ADD_AGE_GROUP |
Aggiungi l'attributo età alle offerte retrocesse a causa di un'età mancante |
SHOPPING_ADD_COLOR |
Aggiungi un colore alle offerte che vengono declassate a causa di un colore mancante |
SHOPPING_ADD_GENDER |
Aggiungi un genere alle offerte che vengono declassate a causa di un genere mancante |
SHOPPING_ADD_GTIN |
Aggiungi un GTIN (Global Trade Item Number) alle offerte che sono state retrocesse perché prive di GTIN |
SHOPPING_ADD_MORE_IDENTIFIERS |
Aggiungi altri identificatori alle offerte che sono state retrocesse a causa di identificatori mancanti |
SHOPPING_ADD_SIZE |
Aggiungi la taglia alle offerte che sono state retrocesse perché non hanno una taglia |
SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN |
Aggiungi prodotti per pubblicare una campagna |
SHOPPING_FIX_DISAPPROVED_PRODUCTS |
Correggere i prodotti non approvati |
SHOPPING_TARGET_ALL_OFFERS |
Crea una campagna generica che ha come target tutte le offerte |
SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT |
Risolvi i problemi relativi alla sospensione degli account Merchant Center |
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING
|
Risolvi i problemi relativi all'avviso di sospensione dell'account Merchant Center |
DYNAMIC_IMAGE_EXTENSION_OPT_IN |
Attivare le estensioni immagine dinamiche nell'account |
RAISE_TARGET_CPA |
Aumenta il CPA target |
LOWER_TARGET_ROAS |
ROAS target più basso |
FORECASTING_SET_TARGET_CPA |
Imposta un CPA target per le campagne per cui non è stato specificato, prima di un evento stagionale per cui è previsto un aumento del traffico |
SET_TARGET_CPA |
Imposta un CPA target per le campagne per cui non è stato specificato |
SET_TARGET_ROAS |
Imposta un ROAS target per le campagne per cui non è stato specificato |
REFRESH_CUSTOMER_MATCH_LIST |
Aggiorna un elenco di clienti che non è stato aggiornato negli ultimi 90 giorni |
IMPROVE_GOOGLE_TAG_COVERAGE |
Implementa il tag Google su più pagine |
CAMPAIGN_SPECIFIC_APP_GOAL |
Aggiungi un obiettivo di conversione da app specifico per la campagna |
RAISE_TARGET_CPA_PERFORMANCE_BID_TOO_LOW |
Aumenta il CPA target quando è troppo basso per le campagne sulla rete di ricerca |
LOWER_TARGET_ROAS_PERFORMANCE_BID_TOO_LOW |
ROAS target più basso quando è troppo basso per le campagne sulla rete di ricerca |
RAISE_BUDGET_PERFORMANCE_TOO_LOW |
Aumenta il budget quando è troppo basso per le campagne sulla rete di ricerca. Disponibile a partire dalla v26. I dettagli dei suggerimenti vengono restituiti in
Recommendation.raise_budget_performance_too_low_recommendation
e applicati utilizzando
ApplyRecommendationOperation.raise_budget_performance_too_low. |
KEYWORD_MATCH_TYPE (deprecato) |
Deprecato, utilizza USE_BROAD_MATCH_KEYWORD |
Recuperare i consigli
Come la maggior parte delle altre entità nell'API Google Ads, gli oggetti Recommendation vengono recuperati utilizzando GoogleAdsService.SearchStream con una query Google Ads Query Language.
Per ogni tipo di consiglio, i dettagli sono forniti in un campo specifico. Ad esempio, i dettagli del suggerimento CAMPAIGN_BUDGET si trovano nel campo campaign_budget_recommendation e sono racchiusi in un oggetto CampaignBudgetRecommendation.
Trova tutti i campi specifici dei suggerimenti nel campo unione recommendation.
Impatto dei suggerimenti
Alcuni tipi di suggerimenti compilano il campo impact del suggerimento.
RecommendationImpact
contiene una stima dell'impatto sul rendimento dell'account in seguito
all'applicazione del consiglio. Le seguenti
metriche dei consigli sono
disponibili nei campi impact.base_metrics e impact.potential_metrics:
impressionsclickscost_microsconversionsall_conversionsvideo_views
Anche quando il campo impact è compilato, la disponibilità delle metriche varia a seconda
del tipo di consiglio e di campagna, tra gli altri fattori. In generale,
controlla la disponibilità di ogni metrica di impatto prima di provare a utilizzarla.
Codice di esempio
Il seguente codice campione recupera tutti i suggerimenti disponibili e ignorati di tipo KEYWORD da un account e stampa alcuni dei relativi dettagli:
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
Intervieni
Qualsiasi suggerimento recuperato può essere applicato o ignorato.
A seconda del tipo, i consigli possono cambiare quotidianamente o anche più volte al giorno. In questo caso, l'oggetto resource_name di un suggerimento può diventare obsoleto dopo il recupero del suggerimento.
È buona norma agire in base ai suggerimenti poco dopo averli recuperati.
Applicare i consigli
Puoi applicare i consigli attivi o ignorati con il metodo ApplyRecommendation di RecommendationService.
I tipi di suggerimenti possono avere parametri obbligatori o facoltativi. La maggior parte dei consigli include valori consigliati che vengono utilizzati per impostazione predefinita.
L'impostazione degli account per l'applicazione automatica dei consigli non è
supportata per tutti i tipi di consiglio. Tuttavia, puoi implementare un comportamento simile per i tipi di consigli completamente supportati dall'API Google Ads.
Per saperne di più, consulta l'esempio di codice
DetectAndApplyRecommendations.
Utilizza il campo union apply_parameters di ApplyRecommendationOperation per applicare i suggerimenti con valori parametro specifici. Ogni tipo di consiglio idoneo ha il proprio campo. Qualsiasi tipo di suggerimento non elencato nel campo apply_parameters non utilizza questi valori parametro.
Esempio di codice
Il seguente codice mostra come creare
ApplyRecommendationOperation e
come eseguire l'override dei valori consigliati se vuoi sostituirli con i
tuoi.
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
L'esempio successivo chiama ApplyRecommendation, inviando le operazioni di applicazione dei consigli create nel codice precedente.
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
Ignorare i consigli
Puoi ignorare i consigli con il
RecommendationService. La struttura
del codice è simile all'applicazione dei suggerimenti, ma al suo posto utilizzi
DismissRecommendationOperation e
RecommendationService.DismissRecommendation.
Operazioni collettive e gestione degli errori
Sia ApplyRecommendation che DismissRecommendation accettano fino a 100 operazioni per richiesta. Quando invii più operazioni in un'unica richiesta, tieni presente i seguenti comportamenti:
- Combinazione di tipi di suggerimenti: per impostazione predefinita (
partial_failure = false), tutte le operazioni in una singola richiesta devono avere come target lo stesso tipo di suggerimento; in caso contrario, l'API restituisceRecommendationError.DIFFERENT_TYPES_NOT_SUPPORTED. Per applicare o ignorare consigli di tipi diversi nella stessa richiesta, impostapartial_failuresutruenella richiesta in modo che le operazioni valide vengano eseguite in modo indipendente. - Errori del ciclo di vita:poiché i suggerimenti vengono valutati in modo dinamico, lo stato di un suggerimento può cambiare tra il recupero e l'azione. Se un suggerimento è già stato applicato, ignorato o non è più applicabile, l'API restituisce
RECOMMENDATION_ALREADY_APPLIED,RECOMMENDATION_ALREADY_DISMISSEDoRECOMMENDATION_INVALIDATEDinRecommendationError.
Applicare automaticamente i consigli
Puoi utilizzare l'RecommendationSubscriptionService per applicare automaticamente i consigli di un tipo specifico.
Per abbonarti a un determinato tipo di consiglio, crea un oggetto RecommendationSubscription, imposta il campo type su uno dei tipi di consiglio supportati e imposta il campo status su ENABLED.
Tipi di suggerimento supportati dall'abbonamento
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
Recuperare gli abbonamenti
Per ottenere informazioni sulle sottoscrizioni ai suggerimenti di un account, esegui una query sulla risorsa recommendation_subscription.
Per visualizzare le modifiche applicate automaticamente, esegui una query sulla risorsa
change_event, filtrando
change_event.client_type su
GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION.
Suggerimenti per la creazione della campagna
Puoi utilizzare RecommendationService.GenerateRecommendationsRequest per generare consigli durante la creazione della campagna per un determinato insieme di tipi di consigli.
GenerateRecommendations accetta come input un ID cliente, un tipo di canale pubblicitario che deve essere SEARCH o PERFORMANCE_MAX, un elenco di tipi di consigli da generare e vari punti dati che dipendono dai tipi specificati. Genera un elenco di oggetti Recommendation in base ai dati forniti. Se non sono disponibili dati sufficienti per generare un suggerimento per il recommendation_types richiesto o se la campagna è già nello stato consigliato, il set di risultati non conterrà un suggerimento per quel tipo.
Assicurati che la tua applicazione gestisca il caso in cui non vengono restituiti consigli per i tipi di consigli richiesti.
La tabella seguente descrive i tipi di consigli supportati da GenerateRecommendations e i campi che devi fornire per ricevere consigli per quel tipo. Come best practice, invia la richiesta GenerateRecommendations dopo aver raccolto tutte le informazioni relative ai tipi di suggerimenti richiesti. Per ulteriori dettagli sui campi obbligatori e facoltativi, inclusi i campi nidificati, consulta la documentazione di riferimento.
| RecommendationType | Campi obbligatori | Campi facoltativi |
|---|---|---|
CAMPAIGN_BUDGET |
Per le campagne sulla rete di ricerca e Performance Max, sono obbligatori i seguenti campi:
|
|
KEYWORD |
|
|
MAXIMIZE_CLICKS_OPT_IN |
|
|
MAXIMIZE_CONVERSIONS_OPT_IN |
|
|
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
|
|
SET_TARGET_CPA |
|
|
SET_TARGET_ROAS |
|
|
SITELINK_ASSET
Nota: l'oggetto SitelinkAssetRecommendation
restituito conterrà elenchi vuoti. Se la risposta GenerateRecommendations contiene un SitelinkAssetRecommendation, può essere considerata un indicatore per aggiungere almeno un asset sitelink alla campagna. |
|
|
TARGET_CPA_OPT_IN |
|
|
TARGET_ROAS_OPT_IN |
|
Esempio di flusso di utilizzo
Supponiamo che la tua azienda sia un'agenzia pubblicitaria che fornisce agli utenti un workflow per la creazione di campagne e che tu voglia offrire suggerimenti agli utenti durante questo flusso. Puoi utilizzare GenerateRecommendationsRequest per generare consigli on demand e incorporarli nell'interfaccia utente per la creazione della campagna.
Il flusso di utilizzo potrebbe essere simile al seguente:
Un utente accede alla tua applicazione per creare una campagna Performance Max.
L'utente fornisce alcune informazioni iniziali nell'ambito del flusso di creazione della campagna. Ad esempio, forniscono i dettagli per creare un'unica
SitelinkAssete selezionanoTARGET_SPENDcome strategia Smart Bidding.Invii un
GenerateRecommendationsRequestche imposta i seguenti campi:campaign_sitelink_count: impostato su1, ovvero il numero di asset sitelink nella campagna in corso di elaborazione.bidding_info: imposta il campo nidificatobidding_strategy_typesuTARGET_SPEND.conversion_tracking_status: impostato sulConversionTrackingStatusdi questo cliente. Per indicazioni su come recuperare questo campo, consulta la guida Inizia per la gestione delle conversioni.recommendation_types: impostato su[SITELINK_ASSET, MAXIMIZE_CLICKS_OPT_IN].advertising_channel_type: impostato suPERFORMANCE_MAX.customer_id: impostato sull'ID del cliente che crea la campagna.
Puoi accettare i consigli in
GenerateRecommendationsResponse, in questo caso unSitelinkAssetRecommendatione unMaximizeClicksOptInRecommendation, e suggerirli all'utente mostrandoli nell'interfaccia di creazione della campagna. Se l'utente accetta un suggerimento, puoi incorporarlo nella richiesta di creazione della campagna una volta completato il flusso di creazione della campagna.