คำแนะนำช่วยปรับปรุงแคมเปญได้หลายวิธี ดังนี้
- แนะนำฟีเจอร์ใหม่ๆ ที่เกี่ยวข้อง
- ใช้งบประมาณให้คุ้มค่ามากขึ้นด้วยการเสนอราคา คีย์เวิร์ด และโฆษณาที่ได้รับการปรับปรุง
- เพิ่มประสิทธิภาพและผลลัพธ์โดยรวมของแคมเปญ
หากต้องการเพิ่มคะแนนการเพิ่มประสิทธิภาพ คุณสามารถใช้ RecommendationService เพื่อดึงข้อมูลคำแนะนำ แล้วนำไปใช้หรือปิดคำแนะนำตามความเหมาะสม นอกจากนี้ คุณยังสามารถสมัครรับการใช้คำแนะนำโดยอัตโนมัติโดยใช้ RecommendationSubscriptionService
คะแนนการเพิ่มประสิทธิภาพ
คะแนนการเพิ่มประสิทธิภาพคือค่าประมาณว่าบัญชี Google Ads มีความพร้อมในการทำงานดีเพียงใด และมีให้ใช้งานที่ระดับCustomerและCampaign
เมตริกที่เกี่ยวข้องกับการเพิ่มประสิทธิภาพสำหรับรายงาน customer และ campaign
มีดังนี้
metrics.optimization_score_urlมี Deep Link ไปยังบัญชีเพื่อดูข้อมูลเกี่ยวกับคําแนะนําที่เกี่ยวข้องใน UI ของ Google Adsmetrics.optimization_score_upliftจะบอกว่าคะแนนการเพิ่มประสิทธิภาพจะเพิ่มขึ้นเท่าใดหากใช้คำแนะนำที่เกี่ยวข้องทั้งหมด ซึ่งเป็นค่าประมาณที่อิงตามคำแนะนำทั้งหมดที่มีอยู่โดยรวม ไม่ใช่แค่ผลรวมของคะแนนการเพิ่มขึ้นของคำแนะนำแต่ละรายการ
หากต้องการจัดกลุ่มและจัดลำดับสินค้าแนะนำที่แสดง คุณสามารถแบ่งกลุ่มเมตริกทั้ง 2 รายการนี้ตามประเภทสินค้าแนะนำได้โดยใช้ segments.recommendation_type ในคำค้นหา
ประเภทของการแนะนำ
ตารางต่อไปนี้แสดงประเภทคําแนะนําที่รองรับใน Google Ads API สําหรับการดึง การใช้ และการปิดคําแนะนํา หากบัญชีมีประเภทคําแนะนําใน UI ของ Google Ads ที่ไม่รองรับใน API คุณสามารถใช้ metrics.optimization_score_url เพื่อลิงก์ผู้ใช้ไปยังหน้าคําแนะนําใน UI ของ Google Ads โดยตรงเพื่อตรวจสอบและดําเนินการตามคําแนะนําเหล่านั้น
ประเภทคำแนะนำที่รองรับอย่างเต็มรูปแบบ
| RecommendationType | คำอธิบาย |
|---|---|
CAMPAIGN_BUDGET |
แก้ไขแคมเปญที่งบประมาณไม่เพียงพอ |
KEYWORD |
เพิ่มคีย์เวิร์ดใหม่ |
TEXT_AD |
เพิ่มคำแนะนำโฆษณา |
TARGET_CPA_OPT_IN |
เสนอราคาด้วย CPA ที่ตั้งไว้ |
MAXIMIZE_CONVERSIONS_OPT_IN |
เสนอราคาด้วยกลยุทธ์เพิ่มจำนวน Conversion สูงสุด |
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
เสนอราคาด้วยการเพิ่มมูลค่า Conversion สูงสุด |
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 |
เพิ่มโฆษณา Search ที่ปรับเปลี่ยนตามบริบทใหม่ |
MARGINAL_ROI_CAMPAIGN_BUDGET |
ปรับงบประมาณแคมเปญเพื่อเพิ่ม ROI |
USE_BROAD_MATCH_KEYWORD |
ใช้การทำงานแบบกว้างสำหรับแคมเปญที่อิงตาม Conversion ที่มีการเสนอราคาอัตโนมัติ |
RESPONSIVE_SEARCH_AD_ASSET |
เพิ่มชิ้นงานโฆษณา Search ที่ปรับเปลี่ยนตามบริบทลงในโฆษณา |
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH |
ปรับปรุงคุณภาพของโฆษณา Search ที่ปรับเปลี่ยนตามบริบท |
DISPLAY_EXPANSION_OPT_IN |
อัปเดตแคมเปญเพื่อใช้การขยายไปยังเครือข่าย Display |
SEARCH_PARTNERS_OPT_IN |
ขยายการเข้าถึงด้วยพาร์ทเนอร์ Google Search |
CUSTOM_AUDIENCE_OPT_IN |
สร้างกลุ่มเป้าหมายที่กำหนดเอง |
IMPROVE_DEMAND_GEN_AD_STRENGTH |
ปรับปรุงคุณภาพของโฆษณาในแคมเปญ Demand Gen |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX |
อัปเกรดแคมเปญ Shopping อัจฉริยะเป็นแคมเปญ Performance Max |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX |
อัปเกรดแคมเปญในพื้นที่เดิมเป็นแคมเปญ Performance Max |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX
|
ย้ายข้อเสนอที่กำหนดเป้าหมายโดยแคมเปญ Shopping มาตรฐานไปยังแคมเปญ Performance Max ที่มีอยู่ |
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX
|
ย้ายข้อมูลโฆษณา Search แบบไดนามิกไปยังแคมเปญ 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 ที่ตั้งไว้เมื่อต่ำเกินไปและมี Conversion น้อยมากหรือไม่มีเลย |
FORECASTING_SET_TARGET_ROAS |
เพิ่มงบประมาณล่วงหน้าก่อนเทศกาลประจำปี ที่คาดว่าจะเพิ่มการเข้าชม และเปลี่ยนกลยุทธ์การเสนอราคา จากเพิ่มมูลค่า Conversion สูงสุดเป็น 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 |
เพิ่ม CPA ที่ตั้งไว้ |
LOWER_TARGET_ROAS |
ROAS เป้าหมายต่ำลง |
FORECASTING_SET_TARGET_CPA |
กำหนด CPA ที่ตั้งไว้สำหรับแคมเปญที่ไม่ได้ระบุไว้ล่วงหน้า ก่อนถึงกิจกรรมตามฤดูกาลที่คาดว่าจะเพิ่มการเข้าชม |
SET_TARGET_CPA |
กำหนด CPA ที่ตั้งไว้สำหรับแคมเปญที่ไม่ได้ระบุไว้ |
SET_TARGET_ROAS |
กำหนด ROAS เป้าหมายสำหรับแคมเปญที่ไม่ได้ระบุไว้ |
REFRESH_CUSTOMER_MATCH_LIST |
อัปเดตรายชื่อลูกค้าที่ไม่ได้อัปเดตในช่วง 90 วันที่ผ่านมา |
IMPROVE_GOOGLE_TAG_COVERAGE |
ติดตั้งใช้งานแท็ก Google ในหน้าเว็บเพิ่มเติม |
CAMPAIGN_SPECIFIC_APP_GOAL |
เพิ่มเป้าหมาย Conversion ของแอปเฉพาะแคมเปญ |
RAISE_TARGET_CPA_PERFORMANCE_BID_TOO_LOW |
เพิ่ม CPA ที่ตั้งไว้เมื่อต่ำเกินไปสําหรับแคมเปญ Search |
LOWER_TARGET_ROAS_PERFORMANCE_BID_TOO_LOW |
ลด ROAS เป้าหมายเมื่อต่ำเกินไปสำหรับแคมเปญ Search |
RAISE_BUDGET_PERFORMANCE_TOO_LOW |
เพิ่มงบประมาณเมื่อต่ำเกินไปสำหรับแคมเปญ Search พร้อมใช้งานตั้งแต่เวอร์ชัน v26 เป็นต้นไป ระบบจะแสดงรายละเอียดคำแนะนำใน Recommendation.raise_budget_performance_too_low_recommendation และใช้โดยใช้ ApplyRecommendationOperation.raise_budget_performance_too_low |
KEYWORD_MATCH_TYPE (เลิกใช้งาน) |
เลิกใช้งานแล้ว โปรดใช้ USE_BROAD_MATCH_KEYWORD แทน |
เรียกข้อมูลคำแนะนำ
เช่นเดียวกับเอนทิตีอื่นๆ ส่วนใหญ่ใน Google Ads API Recommendation
ออบเจ็กต์จะดึงข้อมูลโดยใช้
GoogleAdsService.SearchStream
พร้อมกับคำค้นหา Google Ads Query Language
รายละเอียดของคำแนะนำแต่ละประเภทจะแสดงอยู่ในช่องเฉพาะของคำแนะนำนั้นๆ เช่น รายละเอียดคำแนะนำ CAMPAIGN_BUDGET จะอยู่ในฟิลด์ campaign_budget_recommendation และรวมอยู่ในออบเจ็กต์ CampaignBudgetRecommendation
ค้นหาฟิลด์ทั้งหมดที่เฉพาะเจาะจงสำหรับคำแนะนำได้ในฟิลด์ยูเนียน
recommendation
ผลกระทบของคำแนะนำ
คําแนะนําบางประเภทจะป้อนข้อมูลในช่อง impact ของคําแนะนํา
RecommendationImpact
มีค่าประมาณผลกระทบต่อประสิทธิภาพของบัญชีอันเป็นผลมาจากการ
ใช้คำแนะนำ เมตริกคำแนะนำต่อไปนี้มีอยู่ในช่อง impact.base_metrics และ impact.potential_metrics
impressionsclickscost_microsconversionsall_conversionsvideo_views
แม้ว่าimpactฟิลด์จะได้รับการป้อนข้อมูลแล้ว ความพร้อมใช้งานของเมตริกจะแตกต่างกันไปตามประเภทคำแนะนำและประเภทแคมเปญ รวมถึงปัจจัยอื่นๆ โดยทั่วไป
ให้ตรวจสอบความพร้อมใช้งานของเมตริกผลลัพธ์แต่ละรายการก่อนที่จะพยายามใช้
ตัวอย่างโค้ด
โค้ดตัวอย่างต่อไปนี้จะดึงข้อมูลคำแนะนำประเภท KEYWORD ทั้งหมดที่ใช้ได้และที่ปิดไปแล้วจากบัญชี และพิมพ์รายละเอียดบางส่วนของคำแนะนำเหล่านั้น
Java
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.V25.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
Perl
# 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
ใช้ฟิลด์ Union apply_parameters ของ ApplyRecommendationOperation เพื่อใช้คําแนะนําที่มีค่าพารามิเตอร์ที่เฉพาะเจาะจง คำแนะนำที่เหมาะสมแต่ละประเภทจะมีช่องของตัวเอง ประเภทคำแนะนำที่ไม่ได้ระบุไว้ในช่อง apply_parameters จะไม่ใช้ค่าพารามิเตอร์เหล่านี้
ตัวอย่างโค้ด
โค้ดต่อไปนี้แสดงวิธีสร้าง ApplyRecommendationOperation และวิธีลบล้างค่าที่แนะนำหากต้องการแทนที่ด้วยค่าของคุณเอง
Java
/** 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
Perl
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::V25::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::V25::Resources::Ad->new({ # id => "INSERT_AD_ID_AS_INTEGER_HERE" # }); # my $text_ad_parameters = # Google::Ads::GoogleAds::V25::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::V25::Services::RecommendationService::ApplyRecommendationOperation ->new({ resourceName => $recommendation->{resourceName}}); return $apply_recommendation_operation; }
curl
ตัวอย่างถัดไปจะเรียกใช้ ApplyRecommendation โดยส่งการดำเนินการใช้คําแนะนําที่สร้างขึ้นในโค้ดก่อนหน้า
Java
// 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.V25.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
Perl
# Issue a mutate request to apply the recommendations. my $apply_recommendation_response = $api_client->RecommendationService()->apply({ customerId => $customer_id, operations => $apply_recommendation_operations }); foreach my $result (@{$apply_recommendation_response->{results}}) { printf "Applied recommendation with resource name: '%s'.\n", $result->{resourceName}; }
curl
# Applies a recommendation. # # Variables: # API_VERSION, # CUSTOMER_ID, # DEVELOPER_TOKEN, # MANAGER_CUSTOMER_ID, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. # # RECOMMENDATION_RESOURCE_NAME: The resource name of the recommendation to # apply, from the previous request. curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/recommendations:apply" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "operations": [ { "resourceName": "${RECOMMENDATION_RESOURCE_NAME}" } ] } EOF
ปิดคำแนะนำ
คุณปิดคำแนะนำได้โดยใช้ RecommendationService โครงสร้างโค้ด
คล้ายกับการใช้คำแนะนำ แต่คุณจะใช้
DismissRecommendationOperation และ
RecommendationService.DismissRecommendation แทน
การดำเนินการแบบกลุ่มและการจัดการข้อผิดพลาด
ทั้ง ApplyRecommendation และ DismissRecommendation ยอมรับการดำเนินการสูงสุด 100 รายการต่อคำขอ เมื่อส่งการดำเนินการหลายรายการในคำขอเดียว
โปรดคำนึงถึงลักษณะการทำงานต่อไปนี้
- การผสมประเภทคำแนะนำ: โดยค่าเริ่มต้น (
partial_failure = false) การดำเนินการทั้งหมดในคำขอเดียวต้องกำหนดเป้าหมายเป็นคำแนะนำประเภทเดียวกัน ไม่เช่นนั้น API จะแสดงผลเป็นRecommendationError.DIFFERENT_TYPES_NOT_SUPPORTEDหากต้องการ ใช้หรือปิดคำแนะนำประเภทต่างๆ ในคำขอเดียวกัน ให้ตั้งค่าpartial_failureเป็นtrueในคำขอเพื่อให้การดำเนินการที่ถูกต้องสำเร็จได้โดยอิสระ - ข้อผิดพลาดเกี่ยวกับวงจร: เนื่องจากระบบประเมินคำแนะนำแบบไดนามิก สถานะของคำแนะนำจึงอาจเปลี่ยนแปลงระหว่างการดึงข้อมูลและการดำเนินการ หากใช้คำแนะนำแล้ว ปิดคำแนะนำแล้ว หรือใช้ไม่ได้อีกต่อไป API จะแสดงผล
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 |
สําหรับทั้งแคมเปญ 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 ระบบจะถือว่าเป็นสัญญาณให้เพิ่มชิ้นงานไซต์ลิงก์อย่างน้อย 1 รายการลงในแคมเปญ |
|
|
TARGET_CPA_OPT_IN |
|
|
TARGET_ROAS_OPT_IN |
|
ตัวอย่างขั้นตอนการใช้งาน
สมมติว่าบริษัทของคุณเป็นเอเจนซีโฆษณาที่ให้บริการเวิร์กโฟลว์การสร้างแคมเปญแก่ผู้ใช้ และคุณต้องการให้คำแนะนำแก่ผู้ใช้ในระหว่างเวิร์กโฟลว์นั้น คุณสามารถใช้ GenerateRecommendationsRequest เพื่อ
สร้างคําแนะนําตามต้องการ และรวมคําแนะนําเหล่านั้นไว้ใน
อินเทอร์เฟซผู้ใช้การสร้างแคมเปญ
ขั้นตอนการใช้งานอาจมีลักษณะดังนี้
ผู้ใช้เข้ามาที่แอปพลิเคชันของคุณเพื่อสร้างแคมเปญ Performance Max
ผู้ใช้จะให้ข้อมูลเบื้องต้นบางอย่างซึ่งเป็นส่วนหนึ่งของขั้นตอนการสร้างแคมเปญ เช่น ลูกค้าให้รายละเอียดในการสร้าง
SitelinkAssetรายการเดียว และเลือกTARGET_SPENDเป็นกลยุทธ์ Smart Biddingคุณส่ง
GenerateRecommendationsRequestซึ่งตั้งค่าช่องต่อไปนี้campaign_sitelink_count: ตั้งค่าเป็น1ซึ่งเป็นจำนวนชิ้นงานไซต์ลิงก์ในแคมเปญที่อยู่ระหว่างดำเนินการbidding_info: ตั้งค่าช่องbidding_strategy_typeที่ฝังเป็นTARGET_SPENDconversion_tracking_status: ตั้งค่าเป็นConversionTrackingStatusของลูกค้ารายนี้ ดูคำแนะนำเกี่ยวกับวิธีดึงข้อมูลฟิลด์นี้ได้ที่คู่มือเริ่มต้นใช้งานการจัดการ Conversionrecommendation_types: ตั้งค่าเป็น[SITELINK_ASSET, MAXIMIZE_CLICKS_OPT_IN]advertising_channel_type: ตั้งค่าเป็นPERFORMANCE_MAXcustomer_id: ตั้งค่าเป็นรหัสของลูกค้าที่สร้างแคมเปญ
คุณสามารถใช้คำแนะนำใน
GenerateRecommendationsResponseซึ่งในกรณีนี้คือSitelinkAssetRecommendationและMaximizeClicksOptInRecommendationแล้วแนะนำให้ผู้ใช้ทราบโดยแสดงคำแนะนำเหล่านั้นในอินเทอร์เฟซการสร้างแคมเปญ หากผู้ใช้ยอมรับคำแนะนำ คุณสามารถรวมคำแนะนำนั้นไว้ในคำขอสร้างแคมเปญเมื่อผู้ใช้ทำตามขั้นตอนการสร้างแคมเปญเสร็จสมบูรณ์