يمكن أن تؤدي الاقتراحات إلى تحسين حملاتك بعدة طرق:
- تقديم ميزات جديدة وذات صلة
- حقق أقصى استفادة من ميزانيتك باستخدام عروض الأسعار والكلمات الرئيسية والإعلانات المحسّنة
- زيادة الأداء العام والكفاءة لحملاتك
لزيادة نتائج التحسين، يمكنك استخدام
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 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 |
إضافة مواد عرض المكالمات على مستوى الحملة أو العميل |
التعامل مع الأنواع غير المتوافقة
استرداد الاقتراحات
كما هو الحال مع معظم الكيانات الأخرى في إعلانات Google 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; } }
لغة PHP
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 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; } }
لغة PHP
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
.