Рекомендации могут улучшить ваши кампании несколькими способами:
- Внедрение новых и актуальных функций
- Получите больше от своего бюджета с помощью улучшенных ставок, ключевых слов и объявлений
- Повысьте общую производительность и эффективность ваших кампаний
Чтобы повысить показатели оптимизации, вы можете использовать RecommendationService
для получения рекомендаций, а затем применять или отклонять их. Вы также можете подписаться на автоматическое применение рекомендаций с помощью RecommendationSubscriptionService
.
Оценка оптимизации
Показатель оптимизации — это оценка того, насколько хорошо настроен ваш аккаунт Google Ads для эффективной работы, и он доступен на уровнях Customer
и Campaign
.
Значение Customer.optimization_score_weight
доступно только для учётных записей, не являющихся менеджерами, и используется для расчёта общего показателя оптимизации нескольких учётных записей. Для расчёта общего показателя оптимизации необходимо получить показатель оптимизации и вес показателя оптимизации для каждой учётной записи и умножить их ( Customer.optimization_score * Customer.optimization_score_weight
).
Для отчетов customer
и campaign
доступны метрики, связанные с оптимизацией:
-
metrics.optimization_score_url
предоставляет глубокую ссылку на аккаунт для просмотра информации о связанных рекомендациях в пользовательском интерфейсе Google Ads. - Параметр
metrics.optimization_score_uplift
показывает, насколько увеличится показатель оптимизации при применении всех соответствующих рекомендаций. Это оценка, основанная на всех доступных рекомендациях в целом, а не просто на сумме показателей повышения эффективности для каждой рекомендации.
Чтобы сгруппировать и упорядочить возвращенные рекомендации, вы можете сегментировать обе эти метрики по типу рекомендации, используя segments.recommendation_type
в своем запросе.
Типы рекомендаций
Полностью поддерживаемые типы рекомендаций
РекомендацияТип | Описание |
---|---|
CAMPAIGN_BUDGET | Исправление кампаний, ограниченных бюджетом |
KEYWORD | Добавить новые ключевые слова |
TEXT_AD | Добавить предложения по рекламе |
TARGET_CPA_OPT_IN | Ставка с целевой ценой за конверсию |
MAXIMIZE_CONVERSIONS_OPT_IN | Ставка с максимизацией конверсий |
MAXIMIZE_CONVERSION_VALUE_OPT_IN | Ставка с максимизацией ценности конверсии |
ENHANCED_CPC_OPT_IN | Ставка с улучшенной ценой за клик |
MAXIMIZE_CLICKS_OPT_IN | Ставка с максимальным количеством кликов |
OPTIMIZE_AD_ROTATION | Используйте оптимизированную ротацию объявлений |
MOVE_UNUSED_BUDGET | Переместить неиспользуемые средства в ограниченные бюджеты |
TARGET_ROAS_OPT_IN | Ставка с целевой рентабельностью инвестиций в рекламу |
FORECASTING_CAMPAIGN_BUDGET | Исправление кампаний, бюджет которых, как ожидается, будет ограничен в будущем |
RESPONSIVE_SEARCH_AD | Добавить новое адаптивное поисковое объявление |
MARGINAL_ROI_CAMPAIGN_BUDGET | Скорректируйте бюджет кампании, чтобы увеличить рентабельность инвестиций |
USE_BROAD_MATCH_KEYWORD | Используйте широкое соответствие для кампаний, ориентированных на конверсии, с автоматическим назначением ставок |
RESPONSIVE_SEARCH_AD_ASSET | Добавьте адаптивные поисковые рекламные ресурсы в объявление |
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH | Повысьте эффективность адаптивной поисковой рекламы |
DISPLAY_EXPANSION_OPT_IN | Обновите кампанию для использования Display Expansion |
SEARCH_PARTNERS_OPT_IN | Расширьте охват с помощью партнеров Google Search |
CUSTOM_AUDIENCE_OPT_IN | Создайте индивидуальную аудиторию |
IMPROVE_DEMAND_GEN_AD_STRENGTH | Повысьте эффективность рекламы в кампаниях Demand Gen |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX | Модернизация кампании Smart Shopping до кампании с максимальной эффективностью |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX | Модернизация устаревшей локальной кампании до кампании с максимальной эффективностью |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX | Перенесите предложения, ориентированные на обычные торговые кампании, в существующие кампании с максимальной эффективностью |
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX | Перенос динамических поисковых объявлений в кампании с максимальной эффективностью |
PERFORMANCE_MAX_OPT_IN | Создавайте кампании с максимальной эффективностью в своем аккаунте |
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH | Повысить эффективность группы активов кампании «Максимальная эффективность» до оценки «Отлично» |
PERFORMANCE_MAX_FINAL_URL_OPT_IN | Включите расширение конечного URL для ваших кампаний с максимальной эффективностью. |
RAISE_TARGET_CPA_BID_TOO_LOW | Повысьте целевую цену за конверсию, если она слишком низкая и конверсий очень мало или нет вовсе. |
FORECASTING_SET_TARGET_ROAS | Увеличьте бюджет заранее, в преддверии сезонного события, которое, по прогнозам, увеличит трафик, и измените стратегию назначения ставок с максимальной ценности конверсии на целевую рентабельность инвестиций в рекламу. |
LEAD_FORM_ASSET | Добавьте активы лид-формы в кампанию |
CALLOUT_ASSET | Добавьте активы для выносок на уровень кампании или клиента |
SITELINK_ASSET | Добавьте ресурсы дополнительных ссылок на уровень кампании или клиента |
CALL_ASSET | Добавить активы вызова на уровень кампании или клиента |
SHOPPING_ADD_AGE_GROUP | Добавьте атрибут возрастной группы к предложениям, рейтинг которых понижен из-за отсутствия возрастной группы. |
SHOPPING_ADD_COLOR | Добавить цвет к предложениям, рейтинг которых понижен из-за отсутствия цвета |
SHOPPING_ADD_GENDER | Добавьте пол к предложениям, рейтинг которых понижен из-за отсутствия пола. |
SHOPPING_ADD_GTIN | Добавьте GTIN (глобальный номер торговой позиции) к предложениям, рейтинг которых понижен из-за отсутствия GTIN. |
SHOPPING_ADD_MORE_IDENTIFIERS | Добавьте больше идентификаторов к предложениям, рейтинг которых понижен из-за отсутствия идентификаторов. |
SHOPPING_ADD_SIZE | Добавьте размер к предложениям, которые понижены из-за отсутствия размера. |
SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN | Добавьте продукты для кампании по обслуживанию |
SHOPPING_FIX_DISAPPROVED_PRODUCTS | Исправить отклоненные продукты |
SHOPPING_TARGET_ALL_OFFERS | Создайте всеобъемлющую кампанию, охватывающую все предложения |
SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT | Устранение проблем с приостановкой работы аккаунта Merchant Center |
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING | Устранение проблем с предупреждениями о приостановке аккаунта Merchant Center |
DYNAMIC_IMAGE_EXTENSION_OPT_IN | Включить динамические расширения изображений в аккаунте |
RAISE_TARGET_CPA | Повысить целевую цену за конверсию |
LOWER_TARGET_ROAS | Более низкая целевая рентабельность инвестиций в рекламу |
FORECASTING_SET_TARGET_CPA | Установите целевую цену за конверсию для кампаний, у которых она не указана, в преддверии сезонного события, которое, по прогнозам, увеличит трафик. |
SET_TARGET_CPA | Установите целевую цену за конверсию для кампаний, у которых она не указана |
SET_TARGET_ROAS | Установите целевой показатель рентабельности инвестиций в рекламу для кампаний, для которых он не указан. |
REFRESH_CUSTOMER_MATCH_LIST | Обновите список клиентов, который не обновлялся в течение последних 90 дней. |
IMPROVE_GOOGLE_TAG_COVERAGE | Разверните тег Google на большем количестве страниц |
KEYWORD_MATCH_TYPE (устарело) | Устарело, вместо этого используйте USE_BROAD_MATCH_KEYWORD |
Посмотрите это видео, чтобы узнать больше
Обработка неподдерживаемых типов
Получить рекомендации
Как и большинство других объектов в API Google Ads, объекты Recommendation
извлекаются с помощью GoogleAdsService.SearchStream
с запросом языка запросов Google Ads.
Подробная информация о каждом типе рекомендации представлена в соответствующем поле. Например, информация о рекомендации CAMPAIGN_BUDGET
находится в поле campaign_budget_recommendation
и заключена в объект CampaignBudgetRecommendation
.
Найдите все поля, специфичные для рекомендаций, в поле объединения recommendation
.
Влияние рекомендаций
Некоторые типы рекомендаций заполняют поле impact
рекомендации. В RecommendationImpact
содержится оценка влияния на эффективность аккаунта в результате применения рекомендации. В полях impact.base_metrics
и impact.potential_metrics
доступны следующие метрики рекомендаций :
impressions
clicks
cost_micros
conversions
all_conversions
video_views
Даже если поле impact
заполнено, доступность метрик зависит от типа рекомендации и типа кампании, а также от других факторов. В целом, перед использованием каждой метрики влияния следует проверить её доступность.
Пример кода
Следующий пример кода извлекает все доступные и отклоненные рекомендации типа KEYWORD
из учетной записи и выводит некоторые из их данных:
Ява
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)); } }
С#
// Get the GoogleAdsServiceClient. GoogleAdsServiceClient googleAdsService = client.GetService( Services.V20.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()); }
Питон
googleads_service = client.get_service("GoogleAdsService") query = f""" SELECT recommendation.campaign, recommendation.keyword_recommendation FROM recommendation WHERE recommendation.type = KEYWORD""" # Detects keyword recommendations that exist for the customer account. response = googleads_service.search(customer_id=customer_id, query=query) operations = [] for row in response.results: 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) )
Руби
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
Перл
# 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); });
завиток
# Gets keyword recommendations. # # 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. curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:search" \ --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 { "query": " SELECT recommendation.campaign, recommendation.keyword_recommendation FROM recommendation WHERE recommendation.type = KEYWORD " } EOF
Принять меры
Любую полученную рекомендацию можно применить или отклонить.
В зависимости от типа рекомендации, они могут меняться ежедневно или даже несколько раз в день. В этом случае resource_name
объекта рекомендации может устареть после извлечения рекомендации.
Хорошей практикой является принятие мер по рекомендациям вскоре после их получения.
Применить рекомендации
Видео: Применение рекомендаций
Вы можете применить активные или отклоненные рекомендации с помощью метода ApplyRecommendation
службы RecommendationService
.
Типы рекомендаций могут иметь обязательные или необязательные параметры. Большинство рекомендаций имеют рекомендуемые значения, которые используются по умолчанию.
Настройка учётных записей для автоматического применения рекомендаций поддерживается не для всех типов рекомендаций. Однако вы можете реализовать аналогичное поведение для типов рекомендаций, которые полностью поддерживаются API Google Ads. Подробнее см. в примере кода DetectAndApplyRecommendations
.
Используйте объединенное поле apply_parameters
объекта ApplyRecommendationOperation
для применения рекомендаций с определёнными значениями параметров. Каждый подходящий тип рекомендаций имеет своё собственное поле. Любой тип рекомендаций, не указанный в поле apply_parameters
не использует эти значения параметров.
Пример кода
В следующем коде показано, как создать ApplyRecommendationOperation
и как переопределить рекомендуемые значения, если вы хотите заменить их своими собственными.
Ява
/** 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(); }
С#
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; }
Питон
def build_recommendation_operation(client, recommendation): """Creates a ApplyRecommendationOperation to apply the given recommendation. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. 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 = 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
Руби
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
Перл
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::V20::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::V20::Resources::Ad->new({ # id => "INSERT_AD_ID_AS_INTEGER_HERE" # }); # my $text_ad_parameters = # Google::Ads::GoogleAds::V20::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::V20::Services::RecommendationService::ApplyRecommendationOperation ->new({ resourceName => $recommendation->{resourceName}}); return $apply_recommendation_operation; }
В следующем примере вызывается ApplyRecommendation
, отправляющий операции применения рекомендаций, созданные в предыдущем коде.
Ява
// 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()); }
С#
private void ApplyRecommendation(GoogleAdsClient client, long customerId, List<ApplyRecommendationOperation> operations) { // Get the RecommendationServiceClient. RecommendationServiceClient recommendationService = client.GetService( Services.V20.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 ); } }
Питон
def apply_recommendations(client, customer_id, operations): """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 = recommendation_service.apply_recommendation( customer_id=customer_id, operations=operations ) for result in response.results: print( "Applied a recommendation with resource name: " f"'{result[0].resource_name}'." )
Руби
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
Перл
# 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}; }
завиток
# 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
Посмотрите эти видео, чтобы узнать больше
Применить параметры
Масса
Ошибки
Тесты
Отклонить рекомендации
Вы можете отклонить рекомендации с помощью RecommendationService
. Структура кода аналогична применению рекомендаций , но вместо этого используются DismissRecommendationOperation
и RecommendationService.DismissRecommendation
.
Посмотрите эти видео, чтобы узнать больше
Масса
Ошибки
Тесты
Автоматически применять рекомендации
Вы можете использовать RecommendationSubscriptionService
для автоматического применения рекомендаций определенного типа.
Чтобы подписаться на определенный тип рекомендаций, создайте объект RecommendationSubscription
, задайте в поле type
один из поддерживаемых типов рекомендаций и задайте в поле status
ENABLED
.
Типы рекомендаций, поддерживаемые подпиской
-
ENHANCED_CPC_OPT_IN
-
KEYWORD
-
KEYWORD_MATCH_TYPE
-
LOWER_TARGET_ROAS
-
MAXIMIZE_CLICKS_OPT_IN
-
OPTIMIZE_AD_ROTATION
-
RAISE_TARGET_CPA
-
RESPONSIVE_SEARCH_AD
-
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH
-
SEARCH_PARTNERS_OPT_IN
-
SEARCH_PLUS_OPT_IN
-
SET_TARGET_CPA
-
SET_TARGET_ROAS
-
TARGET_CPA_OPT_IN
-
TARGET_ROAS_OPT_IN
-
USE_BROAD_MATCH_KEYWORD
Получить подписки
Чтобы получить информацию о подписках на рекомендации учетной записи, запросите ресурс recommendation_subscription
.
Чтобы просмотреть изменения, которые были применены автоматически, запросите ресурс change_event
, отфильтровав change_event.client_type
по GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION
.
Рекомендации по построению кампании
Вы можете использовать RecommendationService.GenerateRecommendationsRequest
для генерации рекомендаций во время построения кампании для заданного набора типов рекомендаций.
GenerateRecommendations
принимает в качестве входных данных идентификатор клиента, тип рекламного канала ( SEARCH
или PERFORMANCE_MAX
, список типов рекомендаций для генерации и различные точки данных в зависимости от указанных типов. Функция выводит список объектов Recommendation
на основе предоставленных вами данных. Если данных для генерации рекомендации для запрошенных recommendation_types
недостаточно или кампания уже находится в состоянии «рекомендуется», набор результатов не будет содержать рекомендации для этого типа. Убедитесь, что ваше приложение обрабатывает случай, когда для запрошенных типов рекомендаций не возвращаются рекомендации.
В следующей таблице описаны типы рекомендаций, поддерживаемые GenerateRecommendations
, и поля, которые необходимо указать для получения рекомендаций для каждого типа. Рекомендуется отправлять запрос GenerateRecommendations
после сбора всей информации, относящейся к запрашиваемым типам рекомендаций. Дополнительную информацию об обязательных и необязательных полях, включая вложенные, см. в справочной документации .
РекомендацияТип | Обязательные поля | Необязательные поля |
---|---|---|
CAMPAIGN_BUDGET (начиная с версии 18) | Для кампаний Search и Performance Max обязательными являются следующие поля:
|
|
KEYWORD |
|
|
MAXIMIZE_CLICKS_OPT_IN |
| |
MAXIMIZE_CONVERSIONS_OPT_IN |
| |
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
| |
SET_TARGET_CPA |
| |
SET_TARGET_ROAS |
| |
SITELINK_ASSET Примечание: возвращаемый объект SitelinkAssetRecommendation будет содержать пустые списки. Если ответ GenerateRecommendations содержит SitelinkAssetRecommendation , это можно рассматривать как сигнал к добавлению хотя бы одного ресурса дополнительной ссылки в кампанию. |
| |
TARGET_CPA_OPT_IN |
| |
TARGET_ROAS_OPT_IN |
|
Пример использования потока
Предположим, ваша компания — рекламное агентство, которое предоставляет пользователям доступ к рабочему процессу разработки кампаний, и вы хотите предлагать им рекомендации в ходе этого процесса. Вы можете использовать GenerateRecommendationsRequest
для генерации рекомендаций по запросу и интегрировать их в пользовательский интерфейс разработки кампаний.
Поток использования может выглядеть следующим образом:
Пользователь заходит в ваше приложение, чтобы создать кампанию «Максимальная эффективность».
Пользователь предоставляет некоторую начальную информацию в рамках процесса создания кампании. Например, он предоставляет данные для создания одного
SitelinkAsset
и выбираетTARGET_SPEND
в качестве стратегии интеллектуального назначения ставок .Вы отправляете
GenerateRecommendationsRequest
, который задает следующие поля:campaign_sitelink_count
: установлено значение1
, что соответствует количеству ресурсов дополнительных ссылок в текущей кампании.bidding_info
: установите для вложенного поляbidding_strategy_type
значениеTARGET_SPEND
.conversion_tracking_status
: значениеConversionTrackingStatus
для данного клиента. Инструкции по извлечению этого поля см. в руководстве по началу работы с управлением конверсиями.recommendation_types
: установлено значение[SITELINK_ASSET, MAXIMIZE_CLICKS_OPT_IN]
.advertising_channel_type
: установите значениеPERFORMANCE_MAX
.customer_id
: задается идентификатором клиента, создавшего кампанию.
Вы можете использовать рекомендации из
GenerateRecommendationsResponse
(в данном случаеSitelinkAssetRecommendation
иMaximizeClicksOptInRecommendation
) и предложить их пользователю, отобразив их в интерфейсе создания кампании. Если пользователь принимает предложение, вы можете включить его в запрос на создание кампании после того, как пользователь завершит процесс его создания.