يمكن أن تساعد الاقتراحات على تحسين حملاتك بعدة طرق:
- تقديم ميزات جديدة وذات صلة
- الاستفادة بشكلٍ أفضل من ميزانيتك باستخدام عروض أسعار وكلمات رئيسية وإعلانات محسّنة
- رفع مستوى أداء حملاتك وكفاءتها بوجه عام
لزيادة نتائج التحسين، يمكنك استخدام
RecommendationService
لاسترداد
الاقتراحات، ثم تطبيقها أو رفضها وفقًا لذلك.
نتيجة التحسين
نتيجة التحسين هي تقدير لمدى جودة أداء حسابك على "إعلانات Google" وتوفّرها على المستويَين Customer
وCampaign
.
ولا تتوفّر Customer.optimization_score_weight
إلا للحسابات غير الإدارية، ويتم استخدامها لاحتساب نتيجة التحسين الإجمالية لحسابات متعددة. يمكنك استرداد نتيجة التحسين ووزن نتيجة التحسين للحسابات وضربها معًا (Customer.optimization_score * Customer.optimization_score_weight
) لاحتساب نتيجة التحسين الإجمالية.
تتوفّر مقاييس متعلقة بالتحسينات لتقارير customer
وcampaign
:
- توفّر وحدة
metrics.optimization_score_url
رابطًا لصفحة في الحساب لعرض معلومات عن الاقتراحات ذات الصلة في واجهة مستخدم "إعلانات Google". - توضّح
metrics.optimization_score_uplift
مدى الارتفاع في نتيجة التحسين إذا تم تطبيق جميع الاقتراحات ذات الصلة. وهذه القيمة تقديرية تستند إلى جميع الاقتراحات المتاحة ككل، وليس فقط مجموع نتائج التحسين لكل اقتراح.
لتجميع الاقتراحات المعروضة وترتيبها، يمكنك تقسيم كلا هذين المقياسَين حسب نوع الاقتراح باستخدام segments.recommendation_type
في طلب البحث.
أنواع الاقتراحات
تتيح Google Ads API استخدام أنواع الاقتراحات التالية بالكامل:
نوع الاقتراح | الوصف |
---|---|
CAMPAIGN_BUDGET |
إصلاح الحملات المقيَّدة بالميزانية |
KEYWORD |
إضافة كلمات رئيسية جديدة |
TEXT_AD |
إضافة اقتراحات الإعلانات |
TARGET_CPA_OPT_IN |
تقديم عروض أسعار باستخدام التكلفة المستهدفة للإجراء |
MAXIMIZE_CONVERSIONS_OPT_IN |
تقديم عروض أسعار باستخدام "تحقيق الحد الأقصى من الإحالات الناجحة" |
ENHANCED_CPC_OPT_IN |
تقديم عروض أسعار باستخدام تكلفة النقرة المحسّنة |
SEARCH_PARTNERS_OPT_IN |
توسيع مدى الوصول من خلال الشركاء في شبكة بحث Google |
MAXIMIZE_CLICKS_OPT_IN |
تقديم عروض أسعار باستخدام "الحصول على الحد الأقصى من النقرات" |
OPTIMIZE_AD_ROTATION |
استخدام عرض الإعلانات بالتناوب المحسّن |
CALLOUT_EXTENSION (متوقف) |
تم الإيقاف نهائيًا، ويمكنك استخدام CALLOUT_ASSET بدلاً منها. |
SITELINK_EXTENSION (متوقف) |
تم الإيقاف نهائيًا، ويمكنك استخدام SITELINK_ASSET بدلاً منها. |
CALL_EXTENSION (متوقف) |
تم الإيقاف نهائيًا، ويمكنك استخدام CALL_ASSET بدلاً منها. |
KEYWORD_MATCH_TYPE (متوقف) |
تم الإيقاف نهائيًا، ويمكنك استخدام USE_BROAD_MATCH_KEYWORD بدلاً منها. |
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 |
إضافة مواد عرض الإعلانات المتجاوبة على شبكة البحث إلى إعلان |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX |
ترقية حملة Shopping الذكية إلى حملة أداء أفضل |
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH |
تحسين قوة إعلان متجاوب على شبكة البحث |
DISPLAY_EXPANSION_OPT_IN |
تعديل حملة لاستخدام ميزة "الانتشار على الشبكة الإعلانية" |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX |
ترقية حملة محلية قديمة إلى حملة "الأداء الأفضل" |
RAISE_TARGET_CPA_BID_TOO_LOW |
اقتراح زيادة التكلفة المستهدفة للإجراء عندما تكون منخفضة جدًا وعندما يكون عدد الإحالات الناجحة قليلًا أو منخفضًا جدًا |
FORECASTING_SET_TARGET_ROAS |
اقتراح لرفع الميزانية مسبقًا قبل فعالية موسمية من المتوقّع أن تزيد عدد الزيارات، وتغيير استراتيجية عروض الأسعار من تحقيق الحد الأقصى من قيمة الإحالات الناجحة إلى عائد الإنفاق الإعلاني المستهدف |
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 |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX |
نقل العروض التي تستهدفها حملات Shopping العادية إلى حملات الأداء الأفضل الحالية |
التعامل مع الأنواع غير المتوافقة
استرداد الاقتراحات
مثل معظم الكيانات الأخرى في Google Ads API، يتم جلب Recommendation
Objects باستخدام
GoogleAdsService.SearchStream
طلب البحث بلغة "إعلانات Google".
بالنسبة إلى كل نوع من أنواع الاقتراحات، يتم توفير تفاصيل الاقتراحات في حقل recommendation
محدَّد مع نوع معيّن:
مثال للرمز
يسترِد الرمز النموذجي التالي جميع الاقتراحات المتاحة والمرفوضة من النوع TEXT_AD
من أحد الحسابات ويطبع بعض التفاصيل:
لغة Java
private void runExample(GoogleAdsClient googleAdsClient, long customerId) { try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) { String query = "SELECT recommendation.type, " + "recommendation.campaign, " + "recommendation.text_ad_recommendation " + "FROM recommendation " + "WHERE recommendation.type = TEXT_AD"; // Creates a request that will retrieve all recommendations using pages of the // specified page size. SearchGoogleAdsRequest request = SearchGoogleAdsRequest.newBuilder() .setCustomerId(Long.toString(customerId)) .setPageSize(PAGE_SIZE) .setQuery(query) .build(); // Issues the search request. SearchPagedResponse searchPagedResponse = googleAdsServiceClient.search(request); // Iterates over all rows in all pages and prints the requested field values for the // recommendation in each row. for (GoogleAdsRow googleAdsRow : searchPagedResponse.iterateAll()) { Recommendation recommendation = googleAdsRow.getRecommendation(); Ad recommendedAd = recommendation.getTextAdRecommendation().getAd(); System.out.printf( "Recommendation ('%s') was found for campaign '%s':%n", recommendation.getResourceName(), recommendation.getCampaign()); if (recommendedAd.hasExpandedTextAd()) { ExpandedTextAdInfo eta = recommendedAd.getExpandedTextAd(); System.out.printf( "\tHeadline 1 = '%s'%n" + "\tHeadline 2 = '%s'%n" + "\tDescription = '%s'%n", eta.getHeadlinePart1(), eta.getHeadlinePart2(), eta.getDescription()); } if (recommendedAd.getDisplayUrl() != null) { System.out.printf("\tDisplay URL = '%s'%n", recommendedAd.getDisplayUrl()); } for (String url : recommendedAd.getFinalUrlsList()) { System.out.printf("\tFinal URL = '%s'%n", url); } for (String url : recommendedAd.getFinalMobileUrlsList()) { System.out.printf("\tFinal Mobile URL = '%s'%n", url); } } } }
C#
public void Run(GoogleAdsClient client, long customerId) { // Get the GoogleAdsServiceClient . GoogleAdsServiceClient service = client.GetService(Services.V13.GoogleAdsService); string query = @"SELECT recommendation.type, recommendation.campaign, recommendation.text_ad_recommendation FROM recommendation WHERE recommendation.type = TEXT_AD"; // Create a request that will retrieve all recommendations using pages of the // specified page size. SearchGoogleAdsRequest request = new SearchGoogleAdsRequest() { CustomerId = customerId.ToString(), PageSize = PAGE_SIZE, Query = query }; try { // Issue the search request. PagedEnumerable<SearchGoogleAdsResponse, GoogleAdsRow> searchPagedResponse = service.Search(customerId.ToString(), query); // Iterates over all rows in all pages and prints the requested field values // for the recommendation in each row. foreach (GoogleAdsRow googleAdsRow in searchPagedResponse) { Recommendation recommendation = googleAdsRow.Recommendation; // ... } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
2,999
public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId) { $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); // Creates a query that retrieves recommendations for text ads. $query = 'SELECT recommendation.type, recommendation.campaign, ' . 'recommendation.text_ad_recommendation ' . 'FROM recommendation ' . 'WHERE recommendation.type = TEXT_AD'; // Issues a search request by specifying page size. $response = $googleAdsServiceClient->search($customerId, $query, ['pageSize' => self::PAGE_SIZE]); // 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( "Recommendation with resource name '%s' was found for campaign " . "with resource name '%s':%s", $recommendation->getResourceName(), $recommendation->getCampaign(), PHP_EOL ); $recommendedAd = $recommendation->getTextAdRecommendation()->getAd(); if (!is_null($recommendedAd->getExpandedTextAd())) { $recommendedExpandedTextAd = $recommendedAd->getExpandedTextAd(); printf( "\tHeadline part 1 is '%s'.%s", $recommendedExpandedTextAd->getHeadlinePart1(), PHP_EOL ); printf( "\tHeadline part 2 is '%s'.%s", $recommendedExpandedTextAd->getHeadlinePart2(), PHP_EOL ); printf( "\tDescription is '%s'%s", $recommendedExpandedTextAd->getDescription(), PHP_EOL ); } if (!is_null($recommendedAd->getDisplayUrl())) { printf("\tDisplay URL is '%s'.%s", $recommendedAd->getDisplayUrl(), PHP_EOL); } foreach ($recommendedAd->getFinalUrls() as $finalUrl) { /** @var string $finalUrl */ printf("\tFinal URL is '%s'.%s", $finalUrl, PHP_EOL); } foreach ($recommendedAd->getFinalMobileUrls() as $finalMobileUrl) { /** @var string $finalMobileUrl */ printf("\tFinal Mobile URL is '%s'.%s", $finalMobileUrl, PHP_EOL); } } }
لغة Python
def main(client, customer_id): ga_service = client.get_service("GoogleAdsService") query = """ SELECT recommendation.type, recommendation.campaign, recommendation.text_ad_recommendation FROM recommendation WHERE recommendation.type = TEXT_AD""" search_request = client.get_type("SearchGoogleAdsStreamRequest") search_request.customer_id = customer_id search_request.query = query stream = ga_service.search_stream(request=search_request) for batch in stream: for row in batch.results: recommendation = row.recommendation recommended_ad = recommendation.text_ad_recommendation.ad print( f'Recommendation ("{recommendation.resource_name}") ' f'was found for campaign "{recommendation.campaign}".' ) if recommended_ad.display_url: print(f'\tDisplay URL = "{recommended_ad.display_url}"') for url in recommended_ad.final_urls: print(f'\tFinal URL = "{url}"') for url in recommended_ad.final_mobile_urls: print(f'\tFinal Mobile URL = "{url}"')
Ruby
def get_text_ad_recommendations(customer_id) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new ga_service = client.service.google_ads query = <<~QUERY SELECT recommendation.type, recommendation.campaign, recommendation.text_ad_recommendation FROM recommendation WHERE recommendation.type = TEXT_AD QUERY response = ga_service.search( customer_id: customer_id, query: query, page_size: PAGE_SIZE, ) response.each do |row| recommendation = row.recommendation recommended_ad = recommendation.text_ad_recommendation.ad puts "Recommendation ('#{recommendation.resource_name}') was found for "\ "campaign '#{recommendation.campaign}'." if recommended_ad.expanded_text_ad eta = recommended_ad.expanded_text_ad puts "\tHeadline 1 = '#{eta.headline_part1}'\n\tHeadline2 = '#{eta.headline_part2}'\n" + "\tDescription = '#{eta.description}'" end if recommended_ad.display_url puts "\tDisplay URL = '#{recommended_ad.display_url}'" end recommended_ad.final_urls.each do |url| puts "\tFinal Url = '#{url}'" end recommended_ad.final_mobile_urls.each do |url| puts "\tFinal Mobile Url = '#{url}'" end end end
Perl
sub get_text_ad_recommendations { my ($api_client, $customer_id) = @_; # Creates the search query. my $search_query = "SELECT recommendation.type, recommendation.campaign, " . "recommendation.text_ad_recommendation " . "FROM recommendation WHERE recommendation.type = TEXT_AD"; # Create a search Google Ads request that will retrieve all recommendations for # text ads using pages of the specified page size. my $search_request = Google::Ads::GoogleAds::V13::Services::GoogleAdsService::SearchGoogleAdsRequest ->new({ customerId => $customer_id, query => $search_query, pageSize => PAGE_SIZE }); # Get the GoogleAdsService. my $google_ads_service = $api_client->GoogleAdsService(); my $iterator = Google::Ads::GoogleAds::Utils::SearchGoogleAdsIterator->new({ service => $google_ads_service, request => $search_request }); # Iterate over all rows in all pages and print the requested field values for # the recommendation in each row. while ($iterator->has_next) { my $google_ads_row = $iterator->next; my $recommendation = $google_ads_row->{recommendation}; printf "Recommendation '%s' was found for campaign '%s':\n", $recommendation->{resourceName}, $recommendation->{campaign}; my $recommended_ad = $recommendation->{textAdRecommendation}{ad}; if ($recommended_ad->{expandedTextAd}) { my $recommended_expanded_text_ad = $recommended_ad->{expandedTextAd}; printf "\tHeadline part 1 is '%s'.\n" . "\tHeadline part 2 is '%s'.\n" . "\tDescription is '%s'.\n", $recommended_expanded_text_ad->{headlinePart1}, $recommended_expanded_text_ad->{headlinePart2}, $recommended_expanded_text_ad->{description}; } if ($recommended_ad->{displayUrl}) { printf "\tDisplay URL is '%s'.\n", $recommended_ad->{displayUrl}; } foreach my $final_url (@{$recommended_ad->{finalUrls}}) { printf "\tFinal URL is '%s'.\n", $final_url; } foreach my $final_mobile_url (@{$recommended_ad->{finalMobileUrls}}) { printf "\tFinal Mobile URL is '%s'.\n", $final_mobile_url; } } return 1; }
الإجراءات
ويمكن تطبيق أي اقتراح تم استرداده أو رفضه.
وبناءً على نوع الاقتراح، يمكن أن تتغير الاقتراحات على أساس يومي أو حتى عدة مرات في اليوم. وعند حدوث ذلك، يصبح عنصر الكائن resource_name
قديمًا بعد استرداد الاقتراح.
من الممارسات الجيدة اتخاذ إجراءات بشأن الاقتراحات بعد الاسترجاع.
تطبيق الاقتراحات
لا تتوفر إمكانية ضبط الحسابات للتطبيق التلقائي للاقتراحات في Google Ads API، لكن يمكنك تنفيذ سلوك مشابه لأنواع الاقتراحات المتوافقة بالكامل مع Google Ads API. اطّلِع على
مثال
DetectAndApplyRecommendations
للرمز لمعرفة مزيد من المعلومات.
يمكنك تطبيق الاقتراحات النشطة أو المرفوضة باستخدام الطريقة
ApplyRecommendation
في
RecommendationService
.
يمكن أن تحتوي أنواع الاقتراحات على معلّمات إلزامية أو اختيارية. تأتي معظم الاقتراحات مع القيم المقترحة التي يتم استخدامها بشكل تلقائي، ويمكنك الاطّلاع على تفاصيل الاقتراحات.
استخدِم حقل
apply_parameters
ApplyRecommendationOperation
لتطبيق الاقتراحات باستخدام قيم مَعلمات محدّدة. ولكل نوع مناسب من الاقتراحات حقله الخاص. أي نوع مقترح غير متوفر في الجدول لا يستخدم قيم المعلمات هذه.
مثال للرمز
يوضّح مثال الرمز التالي كيفية تطبيق اقتراح باستخدام معلَمات التطبيق المقترَحة:
لغة Java
private void runExample( GoogleAdsClient googleAdsClient, long customerId, String recommendationId) { String recommendationResourceName = ResourceNames.recommendation(customerId, recommendationId); ApplyRecommendationOperation.Builder operationBuilder = ApplyRecommendationOperation.newBuilder().setResourceName(recommendationResourceName); // Each recommendation types has optional parameters to override the recommended values. // This is an example to override a recommended ad when a TextAdRecommendation is applied. // Please read // https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation // for details. // Note that additional import statements are needed for this example to work. And also, please // replace INSERT_AD_ID_HERE with a valid ad ID below. // // Ad overrideAd = Ad.newBuilder().setId(Long.parseLong("INSERT_AD_ID_HERE")).build(); // operationBuilder.setTextAd(TextAdParameters.newBuilder(). // setAd(overrideAd).build()).build(); List<ApplyRecommendationOperation> operations = new ArrayList<>(); operations.add(operationBuilder.build()); try (RecommendationServiceClient recommendationServiceClient = googleAdsClient.getLatestVersion().createRecommendationServiceClient()) { ApplyRecommendationResponse response = recommendationServiceClient.applyRecommendation(Long.toString(customerId), operations); System.out.printf("Applied %d recommendation:%n", response.getResultsCount()); for (ApplyRecommendationResult result : response.getResultsList()) { System.out.println(result.getResourceName()); } } }
C#
public void Run(GoogleAdsClient client, long customerId, long recommendationId) { // Get the RecommendationServiceClient. RecommendationServiceClient service = client.GetService( Services.V13.RecommendationService); ApplyRecommendationOperation operation = new ApplyRecommendationOperation() { ResourceName = ResourceNames.Recommendation(customerId, recommendationId), // Each recommendation types has optional parameters to override the recommended // values. For example, you can override a recommended ad when a // TextAdRecommendation is applied, as shown below. // Please read https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation // for details. // TextAd = new TextAdParameters() { // Ad = new Ad() { // Id = long.Parse("INSERT_AD_ID_HERE") // } // } }; try { ApplyRecommendationResponse response = service.ApplyRecommendation( customerId.ToString(), new ApplyRecommendationOperation[] { operation }); Console.WriteLine($"Applied {0} recommendation(s):", response.Results.Count); foreach (ApplyRecommendationResult result in response.Results) { Console.WriteLine($"- {result.ResourceName}"); } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
2,999
public static function runExample( GoogleAdsClient $googleAdsClient, int $customerId, string $recommendationId ) { $recommendationResourceName = ResourceNames::forRecommendation($customerId, $recommendationId); $applyRecommendationOperation = new ApplyRecommendationOperation(); $applyRecommendationOperation->setResourceName($recommendationResourceName); // 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. $recommendationServiceClient = $googleAdsClient->getRecommendationServiceClient(); $response = $recommendationServiceClient->applyRecommendation( $customerId, [$applyRecommendationOperation] ); /** @var Recommendation $appliedRecommendation */ $appliedRecommendation = $response->getResults()[0]; printf( "Applied recommendation with resource name: '%s'.%s", $appliedRecommendation->getResourceName(), PHP_EOL ); }
لغة Python
def main(client, customer_id, recommendation_id): recommendation_service = client.get_service("RecommendationService") apply_recommendation_operation = client.get_type( "ApplyRecommendationOperation" ) apply_recommendation_operation.resource_name = recommendation_service.recommendation_path( customer_id, recommendation_id ) # This is where we override the recommended ad when a TextAdRecommendation is applied. # override_ad = client.get_type("Ad") # override_ad.resource_name = "INSERT_AD_ID_HERE" # apply_recommendation_operation.text_ad.ad = override_ad recommendation_response = recommendation_service.apply_recommendation( customer_id=customer_id, operations=[apply_recommendation_operation] ) print( "Applied recommendation with resource name: " f"'{recommendation_response.results[0].resource_name}'" )
Ruby
def apply_recommendation(customer_id, recommendation_id) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new recommendation_resource = client.path.recommendation(customer_id, recommendation_id) apply_recommendation_operation = client.operation.apply_recommendation apply_recommendation_operation.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. # For details, please read # https://developers.google.com/google-ads/api/reference/rpc/google.ads.google_ads.v1.services#google.ads.google_ads.v1.services.ApplyRecommendationOperation # # 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 # apply_recommendation_operation.text_ad = text_ad_parameters # Issues a mutate request to apply the recommendation. recommendation_service = client.service.recommendation response = recommendation_service.apply_recommendation( customer_id: customer_id, operations: [apply_recommendation_operation], ) applied_recommendation = response.results.first puts "Applied recommendation with resource name: '#{applied_recommendation.resource_name}'." end
Perl
sub apply_recommendation { my ($api_client, $customer_id, $recommendation_id) = @_; my $recommendation_resource_name = Google::Ads::GoogleAds::V13::Utils::ResourceNames::recommendation( $customer_id, $recommendation_id); # Create an apply recommendation operation. my $apply_recommendation_operation = Google::Ads::GoogleAds::V13::Services::RecommendationService::ApplyRecommendationOperation ->new({ resourceName => $recommendation_resource_name }); # 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. # # my $overriding_ad = Google::Ads::GoogleAds::V13::Resources::Ad->new({ # id => "INSERT_AD_ID_AS_INTEGER_HERE" # }); # my $text_ad_parameters = # Google::Ads::GoogleAds::V13::Services::RecommendationService::TextAdParameters # ->new({ad => $overriding_ad}); # $apply_recommendation_operation->{textAd} = $text_ad_parameters; # Apply the recommendation. my $apply_recommendation_response = $api_client->RecommendationService()->apply({ customerId => $customer_id, operations => [$apply_recommendation_operation]}); printf "Applied recommendation with resource name: '%s'.\n", $apply_recommendation_response->{results}[0]{resourceName}; return 1; }
شاهِد هذه الفيديوهات للحصول على المزيد من المعلومات.
تطبيق المعلمات
مجمَّع
الأخطاء
الاختبارات
رفض الاقتراحات
يمكنك رفض الاقتراحات باستخدام
RecommendationService
. تتشابه بنية الرمز
مع تطبيق الاقتراحات، ولكنك بدلاً من ذلك تستخدم
DismissRecommendationOperation
و
RecommendationService.DismissRecommendation
.