توصیهها میتوانند کمپینهایتان را به چند روش بهبود دهند:
- معرفی ویژگیهای جدید و مرتبط
- با بهبود دادن قیمتهای پیشنهادی، کلیدواژهها، و آگهیها، از بودجهتان بهره بیشتری ببرید
- افزایش عملکرد و کارایی کلی پویشهایتان
برای افزایش امتیازهای بهینهسازی، میتوانید از
RecommendationService برای بازیابی
توصیهها استفاده کنید و سپس آنها را اعمال یا رد کنید. همچنین میتوانید بااستفاده از RecommendationSubscriptionService،
در اعمال خودکار
توصیهها مشترک شوید.
امتیاز بهینهسازی
امتیاز بهینهسازی برآوردی از میزان موفقیت حساب Google Ads شما است و در سطوح Customer و Campaign دردسترس است.
سنجههای مربوط به بهینهسازی برای customer و campaign
گزارش دردسترس است:
metrics.optimization_score_urlپیوند عمیقی به حساب ارائه میدهد تا اطلاعات مربوط به توصیههای مرتبط را در واسط کاربری Google Ads مشاهده کنید.metrics.optimization_score_upliftنشان میدهد که اگر همه توصیههای مرتبط اعمال شوند، امتیاز بهینهسازی چقدر افزایش مییابد. این تخمینی است که براساس همه توصیههای دردسترس بهطور کلی ارائه میشود، نه فقط مجموع امتیازهای بهینهگر برای هر توصیه.
برای گروهبندی و مرتب کردن توصیههای برگرداندهشده، میتوانید هر دو این سنجهها را براساس نوع توصیه بااستفاده از segments.recommendation_type در پُرسمانتان بخشبندی کنید.
انواع توصیه
جدول زیر انواع توصیههایی را که در Google Ads API برای بازیابی، اعمال، و رد کردن توصیهها پشتیبانی میشوند فهرست میکند. اگر حسابی
در میانای کاربری Google Ads انواع توصیههایی دارد که در میانای برنامهسازی کاربردی پشتیبانی نمیشود،
میتوانید از metrics.optimization_score_url برای پیوند دادن کاربران
مستقیماً به صفحه «توصیهها» در میانای کاربری Google Ads استفاده کنید تا آن توصیهها را مرور کنند و براساس آنها اقدام کنند.
انواع توصیه که بهطور کامل پشتیبانی میشوند
| RecommendationType | شرح |
|---|---|
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 |
بهروزرسانی پویش برای استفاده از «تعمیم در شبکه تبلیغات» |
SEARCH_PARTNERS_OPT_IN |
گسترش دسترسی با شرکای «جستجوی Google» |
CUSTOM_AUDIENCE_OPT_IN |
مخاطب سفارشی بسازید |
IMPROVE_DEMAND_GEN_AD_STRENGTH |
بهبود قدرت آگهیها در کمپینهای «تولید تقاضا» |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX |
ارتقای کمپین «خرید هوشمند» به کمپین «عملکرد بیشینه» |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX |
ارتقای کمپین محلی قدیمی به پویش «بیشینهسازی عملکرد» |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX
|
پیشنهادهای هدفیابیشده توسط «پویشهای Shopping معمولی» را به پویشهای «بیشینهسازی عملکرد» موجود منتقل کنید |
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX
|
انتقال «آگهیهای پویای جستجو» به پویشهای «عملکرد بیشینه» |
PERFORMANCE_MAX_OPT_IN |
ایجاد پویشهای «عملکرد بیشینه» در حسابتان |
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH |
قدرت گروه دارایی پویش «عملکرد بیشینه» را به رده «عالی» بهبود دهید |
PERFORMANCE_MAX_FINAL_URL_OPT_IN |
«ازهم باز کردن نشانی وب نهایی» را برای پویشهای «عملکرد بیشینه» فعال کنید |
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 |
بهروزرسانی فهرست مشتری که در ۹۰ روز گذشته بهروزرسانی نشده است |
IMPROVE_GOOGLE_TAG_COVERAGE |
«برچسب Google» را در صفحههای بیشتری پیادهسازی کنید |
CAMPAIGN_SPECIFIC_APP_GOAL |
هدف تبدیل برنامه خاص پویش را اضافه کنید |
RAISE_TARGET_CPA_PERFORMANCE_BID_TOO_LOW |
افزایش کنشبهای هدف وقتی برای پویشهای «شبکه جستجو» خیلی پایین است |
LOWER_TARGET_ROAS_PERFORMANCE_BID_TOO_LOW |
وقتی «برگشت هزینههای تبلیغات هدف» برای پویشهای «جستجو» خیلی پایین است، آن را افزایش دهید |
RAISE_BUDGET_PERFORMANCE_TOO_LOW |
وقتی بودجه برای کمپینهای «جستجو» خیلی کم است، آن را افزایش دهید. دردسترس
از v26. جزئیات توصیه در
Recommendation.raise_budget_performance_too_low_recommendation
برگردانده میشود و بااستفاده از
ApplyRecommendationOperation.raise_budget_performance_too_low اعمال میشود. |
KEYWORD_MATCH_TYPE (منسوخ) |
منسوخ شده است، درعوض از USE_BROAD_MATCH_KEYWORD استفاده کنید |
بازیابی توصیهها
مانند اکثر نهادهای دیگر در Google Ads API،
اشیاء Recommendation بااستفاده از
GoogleAdsService.SearchStream
با پُرسمان «زبان پُرسمان Google Ads» واکشی میشوند.
برای هر نوع توصیه، جزئیات در فیلد مختص توصیه ارائه میشود. برای مثال، جزئیات توصیه CAMPAIGN_BUDGET در فیلد campaign_budget_recommendation قرار دارد و در شیء CampaignBudgetRecommendation قرار گرفته است.
همه فیلدهای مختص توصیه را در فیلد
recommendation اتحادیه پیدا کنید.
تأثیر توصیه
برخیاز انواع توصیهها فیلد
impact توصیه را پر میکنند.
RecommendationImpact
حاوی برآوردی از تأثیر اعمال توصیه بر عملکرد حساب است. سنجههای توصیه زیر
در فیلدهای impact.base_metrics و impact.potential_metrics
دردسترس است:
impressionsclickscost_microsconversionsall_conversionsvideo_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)); } }
C#
// Get the GoogleAdsServiceClient. GoogleAdsServiceClient googleAdsService = client.GetService( Services.V26.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
پرل
# 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
اقدام کنید
هر توصیه بازیابیشدهای را میتوان اعمال کرد یا بست.
بسته به نوع توصیه، توصیهها میتوانند بهصورت روزانه یا حتی چند بار در روز تغییر کنند. وقتی این اتفاق میافتد، resource_name شیء توصیه ممکن است پساز بازیابی توصیه منسوخ شود.
روال مطلوب این است که بلافاصله پساز بازیابی توصیهها، اقدام لازم را انجام دهید.
اعمال کردن توصیهها
میتوانید توصیههای فعال یا بستهشده را بااستفاده از روش
ApplyRecommendation
RecommendationService اعمال کنید.
انواع توصیه میتوانند پارامترهای اجباری یا اختیاری داشته باشند. بیشتر توصیهها با مقادیر توصیهشدهای ارائه میشوند که بهطور پیشفرض استفاده میشوند.
تنظیم حسابها برای توصیههای اِعمال خودکار برای همه انواع توصیهها پشتیبانی نمیشود. اما میتوانید رفتار مشابهی را برای انواع توصیههایی که Google Ads API کاملاً از آنها پشتیبانی میکند پیادهسازی کنید.
برای اطلاعات بیشتر، به 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(); }
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
پرل
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::V26::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::V26::Resources::Ad->new({ # id => "INSERT_AD_ID_AS_INTEGER_HERE" # }); # my $text_ad_parameters = # Google::Ads::GoogleAds::V26::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::V26::Services::RecommendationService::ApplyRecommendationOperation ->new({ resourceName => $recommendation->{resourceName}}); return $apply_recommendation_operation; }
curl
مثال بعدی 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()); }
C#
private void ApplyRecommendation(GoogleAdsClient client, long customerId, List<ApplyRecommendationOperation> operations) { // Get the RecommendationServiceClient. RecommendationServiceClient recommendationService = client.GetService( Services.V26.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
پرل
# 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
نپذیرفتن توصیهها
میتوانید توصیهها را با
RecommendationService ببندید. ساختار کد شبیه به اعمال کردن توصیهها است، اما درعوض از
DismissRecommendationOperation و
RecommendationService.DismissRecommendation استفاده میکنید.
عملیات انبوه و رسیدگی به خطا
هر دو ApplyRecommendation و DismissRecommendation تا ۱۰۰ عملیات در هر درخواست را میپذیرند. هنگام ارسال چند عملیات در یک درخواست،
رفتارهای زیر را بهخاطر داشته باشید:
- ترکیب کردن انواع توصیه: بهطور پیشفرض (
partial_failure = false)، همه عملیاتها در یک درخواست باید نوع توصیه یکسانی را هدف قرار دهند؛ درغیراینصورت، APIRecommendationError.DIFFERENT_TYPES_NOT_SUPPORTEDرا برمیگرداند. برای اعمال یا رد کردن توصیههای انواع مختلف در یک درخواست،partial_failureرا رویtrueدر درخواست تنظیم کنید تا عملیات معتبر بهطور مستقل موفق شوند. - خطاهای چرخه حیات: ازآنجاییکه توصیهها بهصورت پویا ارزیابی میشوند، وضعیت توصیه میتواند بین بازیابی و اقدام تغییر کند. اگر توصیهای قبلاً اعمال شده باشد، قبلاً رد شده باشد، یا دیگر قابلاعمال نباشد، میانای برنامهسازی کاربردی
RECOMMENDATION_ALREADY_APPLIED،RECOMMENDATION_ALREADY_DISMISSED، یاRECOMMENDATION_INVALIDATEDرا درRecommendationErrorبرمیگرداند.
اِعمال خودکار توصیهها
میتوانید از RecommendationSubscriptionService برای
اعمال خودکار توصیههای نوع خاص استفاده کنید.
برای مشترک شدن در نوع توصیهای خاص، شیء
RecommendationSubscription ایجاد کنید،
فیلد type را روی یکی از
انواع توصیه پشتیبانیشده تنظیم کنید، و
فیلد status را روی ENABLED تنظیم کنید.
انواع توصیههای پشتیبانیشده با اشتراک
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
بازیابی اشتراکها
برای دریافت اطلاعات درباره اشتراکهای توصیه حساب، منبع
recommendation_subscription را پُرسمان کنید.
برای مشاهده تغییراتی که بهطور خودکار اعمال شدهاند، منبع
change_event را جستجو کنید و
change_event.client_type را روی
GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION فیلتر کنید.
توصیهها در ساخت پویش
میتوانید از
RecommendationService.GenerateRecommendationsRequest برای
تولید توصیهها درطول ساخت پویش، برای مجموعه معینی از
انواع توصیه استفاده کنید.
GenerateRecommendations شناسه مشتری، نوع کانال تبلیغات که باید SEARCH یا PERFORMANCE_MAX باشد، فهرستی از انواع توصیههایی که باید تولید شود، و نقاط داده مختلفی را که به انواع مشخصشده بستگی دارد بهعنوان ورودی میپذیرد. این ویژگی فهرستی از
Recommendation شیء را براساس دادههایی که ارائه میدهید تولید میکند. اگر دادههای کافی برای تولید توصیه برای
recommendation_types درخواستشده وجود نداشته باشد، یا اگر پویش ازقبل در
وضعیت توصیهشده باشد، مجموعه نتایج حاوی توصیهای برای آن نوع نخواهد بود.
مطمئن شوید که برنامه شما شرایطی را که هیچ توصیهای برای انواع توصیه درخواستشده برگردانده نمیشود مدیریت میکند.
جدول زیر انواع توصیههایی را که GenerateRecommendations پشتیبانی میکند و فیلدهایی را که باید برای دریافت توصیههای آن نوع ارائه دهید شرح میدهد. بهعنوان روال مطلوب، درخواست
GenerateRecommendations را پساز جمعآوری همه اطلاعات مربوط به انواع توصیه درخواستی ارسال کنید. برای جزئیات بیشتر درباره فیلدهای
الزامی و اختیاری، ازجمله فیلدهای تودرتو، به
اسناد مرجع مراجعه کنید.
| RecommendationType | قسمتهای الزامی | فیلدهای اختیاری |
|---|---|---|
CAMPAIGN_BUDGET |
برای هر دو پویش «جستجو» و «عملکرد بیشینه»، فیلدهای زیر
الزامی است:
|
|
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— را بپذیرید و با نمایش آنها در میانای ساخت پویش، به کاربر پیشنهاد دهید. اگر کاربر پیشنهادی را بپذیرد، میتوانید آن را در درخواست ایجاد پویش بگنجانید، بهشرطی که کاربر جریان ساخت پویش را تکمیل کند.