توصیهها میتوانند کمپینهایتان را به چند روش بهبود دهند:
- معرفی ویژگیهای جدید و مرتبط
- با بهبود قیمتهای پیشنهادی، کلیدواژهها، و آگهیها، از بودجهتان بهره بیشتری ببرید
- افزایش عملکرد و کارایی کلی پویشهایتان
برای افزایش امتیازهای بهینهسازی، میتوانید از
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 |
تنظیم «برگشت هزینههای تبلیغات» (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 اعمال میشود. |
OPTIMIZE_FOR_NEW_CUSTOMERS |
ارزش تبدیل افزایشی برای مشتریان جدید تنظیم کنید تا کمپینها را برای کسب مشتریان جدید بهینهسازی کنید. دردسترس از v26.1.
جزئیات توصیه در
Recommendation.optimize_for_new_customers_recommendation
برگردانده میشود و بااستفاده از
ApplyRecommendationOperation.optimize_for_new_customers اعمال میشود. |
KEYWORD_MATCH_TYPE (منسوخ) |
منسوخ شده است، درعوض از USE_BROAD_MATCH_KEYWORD استفاده کنید |
بازیابی توصیهها
مانند اکثر نهادهای دیگر در Google Ads API،
اشیاء Recommendation بااستفاده از
GoogleAdsService.SearchStream
با پُرسمان Google Ads Query Language واکشی میشوند.
برای هر نوع توصیه، جزئیات در فیلد مختص توصیه ارائه میشود. برای مثال، جزئیات توصیه 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, # 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 "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— را بگیرید و با نمایش دادن آنها در میانای ساخت پویش خود، آنها را به کاربر پیشنهاد دهید. اگر کاربر پیشنهادی را بپذیرد، میتوانید آن را در درخواست ایجاد پویش بگنجانید، پساز اینکه کاربر جریان ساخت پویش را تکمیل کرد.