امتیاز بهینه سازی و توصیه ها

ویدئوی : غواصی عمیق

توصیه‌ها می‌توانند کمپین‌های شما را از چند طریق بهبود بخشند:

  • معرفی ویژگی‌های جدید و مرتبط
  • با بهبود پیشنهادات، کلمات کلیدی و تبلیغات، از بودجه خود بیشتر بهره ببرید
  • افزایش عملکرد و کارایی کلی کمپین‌های شما

برای افزایش امتیازهای بهینه‌سازی، می‌توانید از RecommendationService برای بازیابی توصیه‌ها استفاده کنید و سپس آنها را بر اساس آن اعمال یا رد کنید. همچنین می‌توانید با استفاده از RecommendationSubscriptionService مشترک شوید تا توصیه‌ها به طور خودکار اعمال شوند .

امتیاز بهینه‌سازی

ویدیو: امتیاز بهینه‌سازی

امتیاز بهینه‌سازی، تخمینی از میزان عملکرد حساب گوگل ادز شما است که در سطوح Customer و Campaign در دسترس قرار دارد.

معیارهای مرتبط با بهینه‌سازی برای گزارش‌های customer و campaign در دسترس هستند:

  1. metrics.optimization_score_url یک لینک عمیق به حساب کاربری ارائه می‌دهد تا اطلاعات مربوط به توصیه‌های مرتبط را در رابط کاربری گوگل ادز مشاهده کنید.
  2. تابع 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 تگ گوگل را در صفحات بیشتری قرار دهید
CAMPAIGN_SPECIFIC_APP_GOAL یک هدف تبدیل برنامه خاص برای کمپین اضافه کنید
RAISE_TARGET_CPA_PERFORMANCE_BID_TOO_LOW وقتی CPA هدف برای کمپین‌های جستجو خیلی پایین است، آن را افزایش دهید
LOWER_TARGET_ROAS_PERFORMANCE_BID_TOO_LOW بازگشت سرمایه هدف پایین‌تر، زمانی که برای کمپین‌های جستجو خیلی پایین است
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 موجود است:

  • impressions

  • clicks

  • cost_micros

  • conversions

  • all_conversions

  • video_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.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;
}
      

پی اچ پی

$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,
#   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 اعمال کنید.

انواع توصیه‌ها می‌توانند پارامترهای اجباری یا اختیاری داشته باشند. اکثر توصیه‌ها با مقادیر پیشنهادی ارائه می‌شوند که به طور پیش‌فرض استفاده می‌شوند.

تنظیم حساب‌ها برای اعمال خودکار توصیه‌ها برای همه انواع توصیه‌ها پشتیبانی نمی‌شود. با این حال، می‌توانید رفتار مشابهی را برای انواع توصیه‌هایی که به طور کامل توسط 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::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;
}
      

حلقه زدن

مثال بعدی، 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.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);
    }
}
      

پی اچ پی

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
  • 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، فیلدهای زیر الزامی است:
  • asset_group_info
  • final_url
  • bidding_strategy_type
فقط برای کمپین‌های جستجو، فیلدهای زیر نیز الزامی هستند:
  • country_code
  • language_code
  • positive_location_id یا negative_location_id
  • ad_group_info.keywords
  • bidding_info.
    bidding_strategy_target_info.
    target_impression_share_info
    اگر استراتژی پیشنهاد قیمت روی TARGET_IMPRESSION_SHARE تنظیم شده باشد
  • budget_info
  • برای کمپین‌های Performance Max، مقداری را در فیلد merchant_center_account_id وارد کنید تا به RecommendationsService نشان دهد که توصیه‌هایی برای کمپین‌های خرده‌فروشی، به جای کمپین‌های استاندارد Performance Max، ایجاد کند.
KEYWORD
  • seed_info
  • ad_group_info
MAXIMIZE_CLICKS_OPT_IN
  • conversion_tracking_status
  • bidding_info
MAXIMIZE_CONVERSIONS_OPT_IN
  • conversion_tracking_status
  • bidding_info
MAXIMIZE_CONVERSION_VALUE_OPT_IN
  • conversion_tracking_status
  • bidding_info
SET_TARGET_CPA
  • conversion_tracking_status
  • bidding_info
SET_TARGET_ROAS
  • conversion_tracking_status
  • bidding_info
SITELINK_ASSET
نکته: شیء SitelinkAssetRecommendation برگردانده شده شامل لیست‌های خالی خواهد بود. اگر پاسخ GenerateRecommendations حاوی SitelinkAssetRecommendation باشد، می‌توان آن را به عنوان سیگنالی برای اضافه کردن حداقل یک دارایی sitelink به کمپین در نظر گرفت.
  • campaign_sitelink_count
TARGET_CPA_OPT_IN
  • conversion_tracking_status
  • bidding_info
TARGET_ROAS_OPT_IN
  • conversion_tracking_status
  • bidding_info

مثال جریان استفاده

فرض کنید شرکت شما یک آژانس تبلیغاتی است که گردش کار ساخت کمپین را برای کاربران فراهم می‌کند و شما می‌خواهید در طول آن جریان به کاربران پیشنهادهایی ارائه دهید. می‌توانید GenerateRecommendationsRequest برای تولید توصیه‌های درخواستی استفاده کنید و این توصیه‌ها را در رابط کاربری ساخت کمپین خود بگنجانید.

جریان استفاده ممکن است به شکل زیر باشد:

  1. یک کاربر برای ایجاد یک کمپین Performance Max به برنامه شما مراجعه می‌کند.

  2. کاربر به عنوان بخشی از جریان ساخت کمپین، اطلاعات اولیه‌ای را ارائه می‌دهد. به عنوان مثال، آنها جزئیاتی را برای ساخت یک SitelinkAsset ارائه می‌دهند و TARGET_SPEND به عنوان استراتژی پیشنهاد قیمت هوشمند خود انتخاب می‌کنند.

  3. شما یک 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 : روی شناسه مشتری که کمپین را ایجاد می‌کند تنظیم می‌شود.

  4. شما می‌توانید توصیه‌های موجود در GenerateRecommendationsResponse - در این مورد، SitelinkAssetRecommendation و MaximizeClicksOptInRecommendation - را دریافت کرده و با نمایش آنها در رابط ساخت کمپین خود، آنها را به کاربر پیشنهاد دهید. اگر کاربر پیشنهادی را بپذیرد، می‌توانید پس از تکمیل جریان ساخت کمپین توسط کاربر، آن را در درخواست ایجاد کمپین بگنجانید.

،

ویدئوی : غواصی عمیق

توصیه‌ها می‌توانند کمپین‌های شما را از چند طریق بهبود بخشند:

  • معرفی ویژگی‌های جدید و مرتبط
  • با بهبود پیشنهادات، کلمات کلیدی و تبلیغات، از بودجه خود بیشتر بهره ببرید
  • افزایش عملکرد و کارایی کلی کمپین‌های شما

برای افزایش امتیازهای بهینه‌سازی، می‌توانید از RecommendationService برای بازیابی توصیه‌ها استفاده کنید و سپس آنها را بر اساس آن اعمال یا رد کنید. همچنین می‌توانید با استفاده از RecommendationSubscriptionService مشترک شوید تا توصیه‌ها به طور خودکار اعمال شوند .

امتیاز بهینه‌سازی

ویدیو: امتیاز بهینه‌سازی

امتیاز بهینه‌سازی، تخمینی از میزان عملکرد حساب گوگل ادز شما است که در سطوح Customer و Campaign در دسترس قرار دارد.

معیارهای مرتبط با بهینه‌سازی برای گزارش‌های customer و campaign در دسترس هستند:

  1. metrics.optimization_score_url یک لینک عمیق به حساب کاربری ارائه می‌دهد تا اطلاعات مربوط به توصیه‌های مرتبط را در رابط کاربری گوگل ادز مشاهده کنید.
  2. تابع 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 تگ گوگل را در صفحات بیشتری قرار دهید
CAMPAIGN_SPECIFIC_APP_GOAL یک هدف تبدیل برنامه خاص برای کمپین اضافه کنید
RAISE_TARGET_CPA_PERFORMANCE_BID_TOO_LOW وقتی CPA هدف برای کمپین‌های جستجو خیلی پایین است، آن را افزایش دهید
LOWER_TARGET_ROAS_PERFORMANCE_BID_TOO_LOW بازگشت سرمایه هدف پایین‌تر، زمانی که برای کمپین‌های جستجو خیلی پایین است
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 موجود است:

  • impressions

  • clicks

  • cost_micros

  • conversions

  • all_conversions

  • video_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.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;
}
      

پی اچ پی

$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,
#   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 اعمال کنید.

انواع توصیه‌ها می‌توانند پارامترهای اجباری یا اختیاری داشته باشند. اکثر توصیه‌ها با مقادیر پیشنهادی ارائه می‌شوند که به طور پیش‌فرض استفاده می‌شوند.

تنظیم حساب‌ها برای اعمال خودکار توصیه‌ها برای همه انواع توصیه‌ها پشتیبانی نمی‌شود. با این حال، می‌توانید رفتار مشابهی را برای انواع توصیه‌هایی که به طور کامل توسط 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::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;
}
      

حلقه زدن

مثال بعدی، 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.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);
    }
}
      

پی اچ پی

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
  • 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، فیلدهای زیر الزامی است:
  • asset_group_info
  • final_url
  • bidding_strategy_type
فقط برای کمپین‌های جستجو، فیلدهای زیر نیز الزامی هستند:
  • country_code
  • language_code
  • positive_location_id یا negative_location_id
  • ad_group_info.keywords
  • bidding_info.
    bidding_strategy_target_info.
    target_impression_share_info
    اگر استراتژی پیشنهاد قیمت روی TARGET_IMPRESSION_SHARE تنظیم شده باشد
  • budget_info
  • برای کمپین‌های Performance Max، مقداری را در فیلد merchant_center_account_id وارد کنید تا به RecommendationsService نشان دهد که توصیه‌هایی برای کمپین‌های خرده‌فروشی، به جای کمپین‌های استاندارد Performance Max، ایجاد کند.
KEYWORD
  • seed_info
  • ad_group_info
MAXIMIZE_CLICKS_OPT_IN
  • conversion_tracking_status
  • bidding_info
MAXIMIZE_CONVERSIONS_OPT_IN
  • conversion_tracking_status
  • bidding_info
MAXIMIZE_CONVERSION_VALUE_OPT_IN
  • conversion_tracking_status
  • bidding_info
SET_TARGET_CPA
  • conversion_tracking_status
  • bidding_info
SET_TARGET_ROAS
  • conversion_tracking_status
  • bidding_info
SITELINK_ASSET
نکته: شیء SitelinkAssetRecommendation برگردانده شده شامل لیست‌های خالی خواهد بود. اگر پاسخ GenerateRecommendations حاوی SitelinkAssetRecommendation باشد، می‌توان آن را به عنوان سیگنالی برای اضافه کردن حداقل یک دارایی sitelink به کمپین در نظر گرفت.
  • campaign_sitelink_count
TARGET_CPA_OPT_IN
  • conversion_tracking_status
  • bidding_info
TARGET_ROAS_OPT_IN
  • conversion_tracking_status
  • bidding_info

مثال جریان استفاده

فرض کنید شرکت شما یک آژانس تبلیغاتی است که گردش کار ساخت کمپین را برای کاربران فراهم می‌کند و شما می‌خواهید در طول آن جریان به کاربران پیشنهادهایی ارائه دهید. می‌توانید GenerateRecommendationsRequest برای تولید توصیه‌های درخواستی استفاده کنید و این توصیه‌ها را در رابط کاربری ساخت کمپین خود بگنجانید.

جریان استفاده ممکن است به شکل زیر باشد:

  1. یک کاربر برای ایجاد یک کمپین Performance Max به برنامه شما مراجعه می‌کند.

  2. کاربر به عنوان بخشی از جریان ساخت کمپین، اطلاعات اولیه‌ای را ارائه می‌دهد. به عنوان مثال، آنها جزئیاتی را برای ساخت یک SitelinkAsset ارائه می‌دهند و TARGET_SPEND به عنوان استراتژی پیشنهاد قیمت هوشمند خود انتخاب می‌کنند.

  3. شما یک 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 : روی شناسه مشتری که کمپین را ایجاد می‌کند تنظیم می‌شود.

  4. شما می‌توانید توصیه‌های موجود در GenerateRecommendationsResponse - در این مورد، SitelinkAssetRecommendation و MaximizeClicksOptInRecommendation - را دریافت کرده و با نمایش آنها در رابط ساخت کمپین خود، آنها را به کاربر پیشنهاد دهید. اگر کاربر پیشنهادی را بپذیرد، می‌توانید پس از تکمیل جریان ساخت کمپین توسط کاربر، آن را در درخواست ایجاد کمپین بگنجانید.

،

ویدئوی : غواصی عمیق

توصیه‌ها می‌توانند کمپین‌های شما را از چند طریق بهبود بخشند:

  • معرفی ویژگی‌های جدید و مرتبط
  • با بهبود پیشنهادات، کلمات کلیدی و تبلیغات، از بودجه خود بیشتر بهره ببرید
  • افزایش عملکرد و کارایی کلی کمپین‌های شما

برای افزایش امتیازهای بهینه‌سازی، می‌توانید از RecommendationService برای بازیابی توصیه‌ها استفاده کنید و سپس آنها را بر اساس آن اعمال یا رد کنید. همچنین می‌توانید با استفاده از RecommendationSubscriptionService مشترک شوید تا توصیه‌ها به طور خودکار اعمال شوند .

امتیاز بهینه‌سازی

ویدیو: امتیاز بهینه‌سازی

امتیاز بهینه‌سازی، تخمینی از میزان عملکرد حساب گوگل ادز شما است که در سطوح Customer و Campaign در دسترس قرار دارد.

معیارهای مرتبط با بهینه‌سازی برای گزارش‌های customer و campaign در دسترس هستند:

  1. metrics.optimization_score_url یک لینک عمیق به حساب کاربری ارائه می‌دهد تا اطلاعات مربوط به توصیه‌های مرتبط را در رابط کاربری گوگل ادز مشاهده کنید.
  2. تابع 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 تگ گوگل را در صفحات بیشتری قرار دهید
CAMPAIGN_SPECIFIC_APP_GOAL یک هدف تبدیل برنامه خاص برای کمپین اضافه کنید
RAISE_TARGET_CPA_PERFORMANCE_BID_TOO_LOW وقتی CPA هدف برای کمپین‌های جستجو خیلی پایین است، آن را افزایش دهید
LOWER_TARGET_ROAS_PERFORMANCE_BID_TOO_LOW بازگشت سرمایه هدف پایین‌تر، زمانی که برای کمپین‌های جستجو خیلی پایین است
KEYWORD_MATCH_TYPE (منسوخ شده) منسوخ شده، به جای آن USE_BROAD_MATCH_KEYWORD استفاده کنید

برای آشنایی بیشتر این ویدیو را تماشا کنید

مدیریت انواع پشتیبانی نشده

بازیابی توصیه‌ها

Video: Live coding

Like most other entities in the Google Ads API, Recommendation objects are fetched by using the GoogleAdsService.SearchStream with a Google Ads Query Language query.

For each type of recommendation, details are provided in a recommendation-specific field. For example, CAMPAIGN_BUDGET recommendation details are in the campaign_budget_recommendation field, and are wrapped in a CampaignBudgetRecommendation object.

Find all recommendation-specific fields in the recommendation union field.

Recommendation impact

Some recommendation types populate the impact field of the recommendation. RecommendationImpact contains an estimate of the impact on account performance as a result of applying the recommendation. The following recommendation metrics are available in the impact.base_metrics and impact.potential_metrics fields:

  • impressions

  • clicks

  • cost_micros

  • conversions

  • all_conversions

  • video_views

Even when the impact field is populated, metrics availability varies depending on the recommendation type and campaign type, among other factors. In general, check for availability of each impact metric before trying to use it.

مثال کد

The following sample code retrieves all available and dismissed recommendations of type KEYWORD from an account and prints some of their details:

جاوا

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.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;
}
      

پی اچ پی

$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,
#   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
      

اقدام کنید

Any retrieved recommendation can be applied or dismissed.

Depending on the recommendation type, recommendations can change on a daily basis or even multiple times a day. When that happens, a recommendation object's resource_name can become obsolete after the recommendation is retrieved.

It is good practice to take action on recommendations shortly after retrieval.

Apply recommendations

Video: Apply recommendations

You can apply active or dismissed recommendations with the ApplyRecommendation method of the RecommendationService .

Recommendation types can have mandatory or optional parameters. Most recommendations come with recommended values that are used by default.

Setting accounts for auto-applying recommendations is not supported for all recommendation types. However, you can implement similar behavior for the recommendation types that are fully supported by the Google Ads API. Refer to the DetectAndApplyRecommendations code example to learn more.

Use the apply_parameters union field of ApplyRecommendationOperation to apply recommendations with specific parameter values. Each suitable recommendation type has its own field. Any recommendation type not listed in the apply_parameters field does not use these parameter values.

مثال کد

The following code demonstrates how to build the ApplyRecommendationOperation and how to override the recommended values if you want to replace them with your own.

جاوا

/** 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::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;
}
      

حلقه زدن

The next example calls ApplyRecommendation , sending the apply recommendation operations that were created in the preceding code.

جاوا

// 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.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);
    }
}
      

پی اچ پی

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
      

Watch these videos to learn more

Apply parameters

فله

خطاها

آزمایش‌ها

رد کردن توصیه‌ها

Video: Dismiss recommendations

You can dismiss recommendations with the RecommendationService . The code structure is similar to applying recommendations , but instead you use DismissRecommendationOperation and RecommendationService.DismissRecommendation .

Watch these videos to learn more

فله

خطاها

آزمایش‌ها

Automatically apply recommendations

You can use the RecommendationSubscriptionService to automatically apply recommendations of a specific type.

To subscribe to a particular recommendation type, create a RecommendationSubscription object, set the type field to one of the supported recommendation types , and set the status field to ENABLED .

Subscription-supported recommendation types

  • 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
  • SET_TARGET_CPA
  • SET_TARGET_ROAS
  • TARGET_CPA_OPT_IN
  • TARGET_ROAS_OPT_IN
  • USE_BROAD_MATCH_KEYWORD

Retrieve subscriptions

To get information about an account's recommendation subscriptions, query the recommendation_subscription resource.

To view changes that were automatically applied, query the change_event resource, filtering the change_event.client_type to GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION .

Recommendations in campaign construction

You can use RecommendationService.GenerateRecommendationsRequest to generate recommendations during campaign construction, for a given set of recommendation types.

GenerateRecommendations accepts as input a customer ID, an advertising channel type which must be either SEARCH or PERFORMANCE_MAX , a list of recommendation types to generate, and various data points dependent on the specified types. It outputs a list of Recommendation objects based on the data you provide. If there isn't sufficient data to generate a recommendation for the requested recommendation_types , or if the campaign is already in the recommended state, the result set won't contain a recommendation for that type. Make sure your application handles the case where no recommendations are returned for the requested recommendation types.

The following table describes the recommendation types that GenerateRecommendations supports, and the fields you must provide to receive recommendations for that type. As a best practice, send the GenerateRecommendations request after all information has been collected related to the requested recommendation types. For additional details on required and optional fields, including nested fields, consult the reference documentation .

RecommendationType Required fields Optional fields
CAMPAIGN_BUDGET For both Search and Performance Max campaigns, the following fields are required:
  • asset_group_info
  • final_url
  • bidding_strategy_type
For Search campaigns only, the following fields are also required:
  • country_code
  • language_code
  • positive_location_id or negative_location_id
  • ad_group_info.keywords
  • bidding_info.
    bidding_strategy_target_info.
    target_impression_share_info
    if the bidding strategy is set to TARGET_IMPRESSION_SHARE
  • budget_info
  • For Performance Max campaigns, provide a value in the merchant_center_account_id field to indicate to RecommendationsService to generate recommendations for retail, rather than standard, Performance Max campaigns.
KEYWORD
  • seed_info
  • ad_group_info
MAXIMIZE_CLICKS_OPT_IN
  • conversion_tracking_status
  • bidding_info
MAXIMIZE_CONVERSIONS_OPT_IN
  • conversion_tracking_status
  • bidding_info
MAXIMIZE_CONVERSION_VALUE_OPT_IN
  • conversion_tracking_status
  • bidding_info
SET_TARGET_CPA
  • conversion_tracking_status
  • bidding_info
SET_TARGET_ROAS
  • conversion_tracking_status
  • bidding_info
SITELINK_ASSET
Note: The returned SitelinkAssetRecommendation object will contain empty lists. If the GenerateRecommendations response contains a SitelinkAssetRecommendation , it can be treated as a signal to add at least one sitelink asset to the campaign.
  • campaign_sitelink_count
TARGET_CPA_OPT_IN
  • conversion_tracking_status
  • bidding_info
TARGET_ROAS_OPT_IN
  • conversion_tracking_status
  • bidding_info

Example usage flow

Suppose your company is an advertising agency which provides a campaign construction workflow to users, and you want to offer suggestions to users during that flow. You can use GenerateRecommendationsRequest to generate recommendations on-demand, and incorporate those recommendations into your campaign construction user interface.

The usage flow might look like the following:

  1. A user comes to your application to create a Performance Max campaign.

  2. The user provides some initial information as part of the campaign construction flow. For example, they provide details to build a single SitelinkAsset , and they select TARGET_SPEND as their Smart Bidding strategy.

  3. You send a GenerateRecommendationsRequest which sets the following fields:

    • campaign_sitelink_count : set to 1 , which is the number of sitelink assets on the work-in-progress campaign.

    • bidding_info : set the nested bidding_strategy_type field to TARGET_SPEND .

    • conversion_tracking_status : set to the ConversionTrackingStatus of this customer. For guidance on how to retrieve this field, visit the Getting started guide for conversion management.

    • recommendation_types : set to [SITELINK_ASSET, MAXIMIZE_CLICKS_OPT_IN] .

    • advertising_channel_type : set to PERFORMANCE_MAX .

    • customer_id : set to the ID of the customer creating the campaign.

  4. You can take the recommendations in the GenerateRecommendationsResponse — in this case, a SitelinkAssetRecommendation and a MaximizeClicksOptInRecommendation —and suggest them to the user by displaying them within your campaign construction interface. If the user accepts a suggestion, you can then incorporate it into the campaign creation request once the user completes the campaign construction flow.