ویدئوی : غواصی عمیق
توصیهها میتوانند کمپینهای شما را از چند طریق بهبود بخشند:
- معرفی ویژگیهای جدید و مرتبط
- با بهبود پیشنهادات، کلمات کلیدی و تبلیغات، از بودجه خود بیشتر بهره ببرید
- افزایش عملکرد و کارایی کلی کمپینهای شما
برای افزایش امتیازهای بهینهسازی، میتوانید از RecommendationService برای بازیابی توصیهها استفاده کنید و سپس آنها را بر اساس آن اعمال یا رد کنید. همچنین میتوانید با استفاده از RecommendationSubscriptionService مشترک شوید تا توصیهها به طور خودکار اعمال شوند .
امتیاز بهینهسازی
امتیاز بهینهسازی ، تخمینی از میزان عملکرد حساب گوگل ادز شما است که در سطوح Customer و Campaign در دسترس قرار دارد.
Customer.optimization_score_weight فقط برای حسابهای کاربری غیرمدیر در دسترس است و برای محاسبه امتیاز کلی بهینهسازی چندین حساب کاربری استفاده میشود. امتیاز بهینهسازی و وزن امتیاز بهینهسازی حسابها را بازیابی کرده و آنها را در هم ضرب کنید ( Customer.optimization_score * Customer.optimization_score_weight ) تا امتیاز کلی بهینهسازی محاسبه شود.
معیارهای مرتبط با بهینهسازی برای گزارشهای customer و campaign در دسترس هستند:
-
metrics.optimization_score_urlیک لینک عمیق به حساب کاربری ارائه میدهد تا اطلاعات مربوط به توصیههای مرتبط را در رابط کاربری گوگل ادز مشاهده کنید. - تابع
metrics.optimization_score_upliftمیگوید که اگر همه توصیههای مرتبط اعمال شوند، امتیاز بهینهسازی چقدر افزایش مییابد. این یک تخمین بر اساس کل توصیههای موجود است، نه فقط مجموع امتیازات افزایش برای هر توصیه.
برای گروهبندی و مرتبسازی توصیههای بازگشتی، میتوانید هر دوی این معیارها را بر اساس نوع توصیه با استفاده از segments.recommendation_type در کوئری خود بخشبندی کنید.
انواع توصیهها
انواع توصیههای کاملاً پشتیبانیشده
| نوع توصیه | توضیحات |
|---|---|
CAMPAIGN_BUDGET | رفع محدودیت کمپینها از نظر بودجه |
KEYWORD | اضافه کردن کلمات کلیدی جدید |
TEXT_AD | افزودن پیشنهادهای تبلیغاتی |
TARGET_CPA_OPT_IN | پیشنهاد قیمت با CPA هدف |
MAXIMIZE_CONVERSIONS_OPT_IN | پیشنهاد قیمت با حداکثر کردن تبدیلها |
MAXIMIZE_CONVERSION_VALUE_OPT_IN | پیشنهاد قیمت با حداکثر کردن ارزش تبدیل |
ENHANCED_CPC_OPT_IN | پیشنهاد قیمت با CPC پیشرفته |
MAXIMIZE_CLICKS_OPT_IN | پیشنهاد قیمت با حداکثر کلیک |
OPTIMIZE_AD_ROTATION | از چرخشهای تبلیغاتی بهینه استفاده کنید |
MOVE_UNUSED_BUDGET | موارد استفاده نشده را به بودجههای محدود منتقل کنید |
TARGET_ROAS_OPT_IN | با هدف بازگشت سرمایه (ROAS) پیشنهاد قیمت دهید |
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 | گسترش دسترسی با شرکای جستجوی گوگل |
CUSTOM_AUDIENCE_OPT_IN | ایجاد مخاطب سفارشی |
IMPROVE_DEMAND_GEN_AD_STRENGTH | قدرت تبلیغات را در کمپینهای Demand Gen بهبود بخشید |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX | ارتقاء کمپین خرید هوشمند به کمپین عملکرد حداکثری |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX | یک کمپین محلی قدیمی را به یک کمپین Performance Max ارتقا دهید |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX | پیشنهادهای هدفمند کمپینهای خرید معمولی را به کمپینهای Performance Max موجود منتقل کنید |
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX | تبلیغات جستجوی پویا را به کمپینهای Performance Max منتقل کنید |
PERFORMANCE_MAX_OPT_IN | کمپینهای Performance Max را در حساب خود ایجاد کنید |
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH | قدرت گروه دارایی یک کمپین Performance Max را به رتبه "عالی" ارتقا دهید. |
PERFORMANCE_MAX_FINAL_URL_OPT_IN | فعال کردن قابلیت Final URL Expansion برای کمپینهای Performance Max |
RAISE_TARGET_CPA_BID_TOO_LOW | وقتی CPA هدف خیلی پایین است و تبدیلها خیلی کم یا اصلاً وجود ندارند، آن را افزایش دهید. |
FORECASTING_SET_TARGET_ROAS | بودجه را قبل از یک رویداد فصلی که پیشبینی میشود ترافیک را افزایش دهد، افزایش دهید و استراتژی پیشنهاد قیمت را از حداکثر کردن ارزش تبدیل به هدف قرار دادن بازگشت سرمایه (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 | رفع مشکلات تعلیق حساب مرکز تجاری |
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING | رفع مشکل هشدار تعلیق حساب کاربری مرکز تجاری |
DYNAMIC_IMAGE_EXTENSION_OPT_IN | فعال کردن افزونههای تصویر پویا در حساب کاربری |
RAISE_TARGET_CPA | افزایش CPA هدف |
LOWER_TARGET_ROAS | بازگشت سرمایه (ROAS) هدف پایینتر |
FORECASTING_SET_TARGET_CPA | قبل از یک رویداد فصلی که پیشبینی میشود ترافیک را افزایش دهد، برای کمپینهایی که CPA مشخصی ندارند، یک CPA هدف تعیین کنید. |
SET_TARGET_CPA | برای کمپینهایی که CPA هدف مشخصی ندارند، یک CPA هدف تعیین کنید |
SET_TARGET_ROAS | برای کمپینهایی که ROAS هدف مشخصی ندارند، یک ROAS هدف تعیین کنید |
REFRESH_CUSTOMER_MATCH_LIST | بهروزرسانی فهرست مشتریانی که در ۹۰ روز گذشته بهروزرسانی نشدهاند |
IMPROVE_GOOGLE_TAG_COVERAGE | تگ گوگل را در صفحات بیشتری قرار دهید |
KEYWORD_MATCH_TYPE (منسوخ شده) | منسوخ شده، به جای آن از USE_BROAD_MATCH_KEYWORD استفاده کنید |
برای آشنایی بیشتر این ویدیو را تماشا کنید
مدیریت انواع پشتیبانی نشده
بازیابی توصیهها
مانند اکثر موجودیتهای دیگر در API گوگل ادز، اشیاء Recommendation با استفاده از GoogleAdsService.SearchStream با یک کوئری زبان جستجوی گوگل ادز واکشی میشوند.
برای هر نوع توصیه، جزئیات در یک فیلد مخصوص به آن توصیه ارائه میشوند. برای مثال، جزئیات توصیه 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)); } }
سی شارپ
// Get the GoogleAdsServiceClient. GoogleAdsServiceClient googleAdsService = client.GetService( Services.V22.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; }
پی اچ پی
$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: 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) )
روبی
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 تبلیغات گوگل پشتیبانی میشوند، پیادهسازی کنید. برای کسب اطلاعات بیشتر به مثال کد 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; }
پی اچ پی
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: 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
روبی
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::V22::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::V22::Resources::Ad->new({ # id => "INSERT_AD_ID_AS_INTEGER_HERE" # }); # my $text_ad_parameters = # Google::Ads::GoogleAds::V22::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::V22::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.V22.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); } }
پی اچ پی
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: 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}'." )
روبی
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 | برای هر دو کمپین 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 باشد، میتوان آن را به عنوان سیگنالی برای اضافه کردن حداقل یک دارایی sitelink به کمپین در نظر گرفت. |
| |
TARGET_CPA_OPT_IN |
| |
TARGET_ROAS_OPT_IN |
|
مثال جریان استفاده
فرض کنید شرکت شما یک آژانس تبلیغاتی است که گردش کار ساخت کمپین را برای کاربران فراهم میکند و شما میخواهید در طول آن جریان به کاربران پیشنهادهایی ارائه دهید. میتوانید از GenerateRecommendationsRequest برای تولید توصیههای درخواستی استفاده کنید و این توصیهها را در رابط کاربری ساخت کمپین خود بگنجانید.
جریان استفاده ممکن است به شکل زیر باشد:
یک کاربر برای ایجاد یک کمپین Performance Max به برنامه شما مراجعه میکند.
کاربر به عنوان بخشی از جریان ساخت کمپین، اطلاعات اولیهای را ارائه میدهد. به عنوان مثال، آنها جزئیاتی را برای ساخت یک
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- را دریافت کرده و با نمایش آنها در رابط ساخت کمپین خود، آنها را به کاربر پیشنهاد دهید. اگر کاربر پیشنهادی را بپذیرد، میتوانید پس از تکمیل جریان ساخت کمپین توسط کاربر، آن را در درخواست ایجاد کمپین بگنجانید.