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

ویدیو: شیرجه عمیق

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

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

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

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

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

امتیاز بهینه سازی تخمینی است از میزان عملکرد حساب Google Ads شما که در سطح Customer و Campaign در دسترس است.

Customer.optimization_score_weight فقط برای حساب های غیر مدیر در دسترس است و برای محاسبه امتیاز بهینه سازی کلی چندین حساب استفاده می شود. امتیاز بهینه‌سازی و وزن امتیاز بهینه‌سازی حساب‌ها را بازیابی کنید و آنها را با هم ضرب کنید ( Customer.optimization_score * Customer.optimization_score_weight ) تا امتیاز کلی بهینه‌سازی را محاسبه کنید.

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

  1. metrics.optimization_score_url یک پیوند عمیق به حساب برای مشاهده اطلاعات توصیه‌های مرتبط در رابط کاربری Google Ads ارائه می‌کند.
  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 بودجه کمپین را برای افزایش ROI تنظیم کنید
USE_BROAD_MATCH_KEYWORD از تطابق گسترده برای کمپین‌های مبتنی بر تبدیل با مناقصه خودکار استفاده کنید
RESPONSIVE_SEARCH_AD_ASSET دارایی های تبلیغات جستجوی واکنشگرا را به یک تبلیغ اضافه کنید
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH قدرت تبلیغات جستجوی واکنشگرا را افزایش دهید
DISPLAY_EXPANSION_OPT_IN یک کمپین را برای استفاده از Display Expansion به روز کنید
SEARCH_PARTNERS_OPT_IN دسترسی را با شرکای جستجوی Google گسترش دهید
CUSTOM_AUDIENCE_OPT_IN یک مخاطب سفارشی ایجاد کنید
IMPROVE_DISCOVERY_AD_STRENGTH افزایش قدرت تبلیغات در کمپین های تقاضای نسل
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX یک کمپین خرید هوشمند را به کمپین حداکثر عملکرد ارتقا دهید
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX یک کمپین محلی قدیمی را به کمپین حداکثر عملکرد ارتقا دهید
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX پیشنهادات هدف کمپین‌های خرید منظم را به کمپین‌های حداکثر عملکرد فعلی منتقل کنید
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX تبلیغات جستجوی پویا را به کمپین‌های حداکثر عملکرد منتقل کنید
PERFORMANCE_MAX_OPT_IN کمپین های Performance Max را در حساب خود ایجاد کنید
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH قدرت گروه دارایی یک کمپین Performance Max را به رتبه "عالی" ارتقا دهید
PERFORMANCE_MAX_FINAL_URL_OPT_IN گسترش URL نهایی را برای کمپین‌های حداکثر عملکرد خود روشن کنید
RAISE_TARGET_CPA_BID_TOO_LOW CPA هدف را زمانی که خیلی کم است و تبدیل ها بسیار کم است یا اصلاً انجام نمی شود، افزایش دهید
FORECASTING_SET_TARGET_ROAS قبل از رویداد فصلی که برای افزایش ترافیک پیش‌بینی می‌شود، بودجه را افزایش دهید و استراتژی پیشنهاد قیمت را از حداکثر کردن ارزش تبدیل به ROAS هدف تغییر دهید.
LEAD_FORM دارایی های فرم سرنخ را به کمپین اضافه کنید
CALLOUT_ASSET دارایی های فراخوان را به سطح کمپین یا مشتری اضافه کنید
SITELINK_ASSET دارایی های لینک سایت را به سطح کمپین یا مشتری اضافه کنید
CALL_ASSET دارایی های تماس را به سطح کمپین یا مشتری اضافه کنید
SHOPPING_ADD_AGE_GROUP ویژگی گروه سنی را به پیشنهادهایی که به دلیل عدم وجود گروه سنی تنزل رتبه می‌دهند، اضافه کنید
SHOPPING_ADD_COLOR به پیشنهادهایی که به دلیل رنگ از دست رفته تنزل رتبه داده شده اند، رنگی اضافه کنید
SHOPPING_ADD_GENDER به پیشنهادهایی که به دلیل عدم وجود جنسیت تنزل رتبه داده شده اند، یک جنسیت اضافه کنید
SHOPPING_ADD_GTIN یک GTIN (شماره کالای تجاری جهانی) به پیشنهادهایی که به دلیل کمبود GTIN تنزل رتبه می‌دهند اضافه کنید.
SHOPPING_ADD_MORE_IDENTIFIERS شناسه‌های بیشتری را به پیشنهادهایی که به دلیل از دست دادن شناسه‌ها تنزل یافته‌اند، اضافه کنید
SHOPPING_ADD_SIZE اندازه را به پیشنهادهایی که به دلیل کمبود اندازه کاهش یافته اند اضافه کنید
SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN محصولاتی را برای یک کمپین برای ارائه اضافه کنید
SHOPPING_FIX_DISAPPROVED_PRODUCTS محصولات تایید نشده را رفع کنید
SHOPPING_TARGET_ALL_OFFERS یک کمپین فراگیر ایجاد کنید که همه پیشنهادات را هدف قرار دهد
SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT مشکلات تعلیق حساب Merchant Center را برطرف کنید
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING مشکلات هشدار تعلیق حساب Merchant Center را برطرف کنید
DYNAMIC_IMAGE_EXTENSION_OPT_IN پسوندهای تصویر پویا را در حساب فعال کنید
RAISE_TARGET_CPA CPA هدف را افزایش دهید
LOWER_TARGET_ROAS ROAS با هدف پایین تر
FORECASTING_SET_TARGET_CPA قبل از یک رویداد فصلی که پیش‌بینی می‌شود ترافیک را افزایش دهد، یک CPA هدف برای کمپین‌هایی تعیین کنید که مشخص نشده است.
SET_TARGET_CPA یک CPA هدف برای کمپین هایی که مشخص نشده اند تعیین کنید
SET_TARGET_ROAS ROAS هدف را برای کمپین هایی که مشخص نشده اند تعیین کنید
REFRESH_CUSTOMER_MATCH_LIST فهرست مشتریانی را که در ۹۰ روز گذشته به‌روزرسانی نشده است، به‌روزرسانی کنید
IMPROVE_GOOGLE_TAG_COVERAGE تگ Google را در صفحات بیشتری مستقر کنید
CALLOUT_EXTENSION (منسوخ شده) منسوخ شده است، به جای آن از CALLOUT_ASSET استفاده کنید
SITELINK_EXTENSION (منسوخ شده) منسوخ شده است، به جای آن از SITELINK_ASSET استفاده کنید
CALL_EXTENSION (منسوخ شده) منسوخ شده است، به جای آن از CALL_ASSET استفاده کنید
KEYWORD_MATCH_TYPE (منسوخ شده) منسوخ شده است، به جای آن از USE_BROAD_MATCH_KEYWORD استفاده کنید

برای کسب اطلاعات بیشتر این ویدیو را تماشا کنید

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

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

ویدیو: برنامه نویسی زنده

مانند بسیاری از موجودیت‌های دیگر در Google Ads API، اشیاء Recommendation با استفاده از GoogleAdsService.SearchStream با درخواست زبان جستجوی Google Ads واکشی می‌شوند.

برای هر نوع توصیه، جزئیات در یک فیلد مخصوص توصیه ارائه شده است. به عنوان مثال، جزئیات توصیه CAMPAIGN_BUDGET در قسمت campaign_budget_recommendation هستند و در یک شی CampaignBudgetRecommendation پیچیده می شوند.

همه فیلدهای خاص توصیه را در قسمت recommendation اتحادیه پیدا کنید.

تاثیر توصیه

برخی از انواع توصیه ها حوزه impact توصیه را پر می کنند. RecommendationImpact شامل برآوردی از تأثیر بر عملکرد حساب در نتیجه اعمال توصیه است. معیارهای توصیه زیر در فیلدهای impact.base_metrics و impact.potential_metrics موجود است:

  • impressions

  • clicks

  • cost_micros

  • conversions

  • all_conversions

  • video_views

نمونه کد

کد نمونه زیر تمام توصیه های موجود و رد شده از نوع 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.V18.GoogleAdsService);

// Creates a query that retrieves keyword recommendations.
string query = "SELECT recommendation.resource_name, " +
    "recommendation.campaign, recommendation.keyword_recommendation " +
    "FROM recommendation WHERE " +
    $"recommendation.type = KEYWORD";

List<ApplyRecommendationOperation> operations =
    new List<ApplyRecommendationOperation>();

try
{
    // Issue a search request.
    googleAdsService.SearchStream(customerId.ToString(), query,
        delegate (SearchGoogleAdsStreamResponse resp)
        {
            Console.WriteLine($"Found {resp.Results.Count} recommendations.");
            foreach (GoogleAdsRow googleAdsRow in resp.Results)
            {
                Recommendation recommendation = googleAdsRow.Recommendation;
                Console.WriteLine("Keyword recommendation " +
                    $"{recommendation.ResourceName} was found for campaign " +
                    $"{recommendation.Campaign}.");

                if (recommendation.KeywordRecommendation != null)
                {
                    KeywordInfo keyword =
                        recommendation.KeywordRecommendation.Keyword;
                    Console.WriteLine($"Keyword = {keyword.Text}, type = " +
                        "{keyword.MatchType}");
                }

                operations.Add(
                    BuildApplyRecommendationOperation(recommendation.ResourceName)
                );
            }
        }
    );
}
catch (GoogleAdsException e)
{
    Console.WriteLine("Failure:");
    Console.WriteLine($"Message: {e.Message}");
    Console.WriteLine($"Failure: {e.Failure}");
    Console.WriteLine($"Request ID: {e.RequestId}");
    throw;
}
      

PHP

$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
// Creates a query that retrieves keyword recommendations.
$query = 'SELECT recommendation.resource_name, recommendation.campaign, '
    . 'recommendation.keyword_recommendation '
    . 'FROM recommendation '
    . 'WHERE recommendation.type = KEYWORD ';
// Issues a search request to detect keyword recommendations that exist for the
// customer account.
$response =
    $googleAdsServiceClient->search(SearchGoogleAdsRequest::build($customerId, $query));

$operations = [];
// Iterates over all rows in all pages and prints the requested field values for
// the recommendation in each row.
foreach ($response->iterateAllElements() as $googleAdsRow) {
    /** @var GoogleAdsRow $googleAdsRow */
    $recommendation = $googleAdsRow->getRecommendation();
    printf(
        "Keyword recommendation with resource name '%s' was found for campaign "
        . "with resource name '%s':%s",
        $recommendation->getResourceName(),
        $recommendation->getCampaign(),
        PHP_EOL
    );
    if (!is_null($recommendation->getKeywordRecommendation())) {
        $keyword = $recommendation->getKeywordRecommendation()->getKeyword();
        printf(
            "\tKeyword = '%s'%s\ttype = '%s'%s",
            $keyword->getText(),
            PHP_EOL,
            KeywordMatchType::name($keyword->getMatchType()),
            PHP_EOL
        );
    }
    // Creates an ApplyRecommendationOperation that will be used to apply this
    // recommendation, and adds it to the list of operations.
    $operations[] = self::buildRecommendationOperation($recommendation->getResourceName());
}
      

پایتون

googleads_service = client.get_service("GoogleAdsService")
query = f"""
    SELECT
      recommendation.campaign,
      recommendation.keyword_recommendation
    FROM recommendation
    WHERE
      recommendation.type = KEYWORD"""

# Detects keyword recommendations that exist for the customer account.
response = googleads_service.search(customer_id=customer_id, query=query)

operations = []
for row in response.results:
    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);
  });
      

اقدام کنید

هر توصیه بازیابی شده را می توان اعمال کرد یا رد کرد.

بسته به نوع توصیه، توصیه ها می توانند به صورت روزانه یا حتی چندین بار در روز تغییر کنند. هنگامی که این اتفاق می افتد، resource_name یک شی توصیه می تواند پس از بازیابی توصیه منسوخ شود.

عمل خوبی است که در مدت کوتاهی پس از بازیابی بر روی توصیه ها اقدام کنید.

توصیه ها را اعمال کنید

ویدیو: توصیه ها را اعمال کنید

می توانید توصیه های فعال یا رد شده را با روش ApplyRecommendation از RecommendationService اعمال کنید.

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

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

PHP

private static function buildRecommendationOperation(
    string $recommendationResourceName
): ApplyRecommendationOperation {
    // If you have a recommendation_id instead of the resource name, you can create a resource
    // name from it like this:
    /*
    $recommendationResourceName =
        ResourceNames::forRecommendation($customerId, $recommendationId);
    */

    // Each recommendation type has optional parameters to override the recommended values.
    // This is an example to override a recommended ad when a TextAdRecommendation is applied.
    // For details, please read
    // https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation.
    /*
    $overridingAd = new Ad([
        'id' => 'INSERT_AD_ID_AS_INTEGER_HERE'
    ]);
    $applyRecommendationOperation->setTextAd(new TextAdParameters(['ad' => $overridingAd]));
    */

    // Issues a mutate request to apply the recommendation.
    $applyRecommendationOperation = new ApplyRecommendationOperation();
    $applyRecommendationOperation->setResourceName($recommendationResourceName);
    return $applyRecommendationOperation;
}
      

پایتون

def build_recommendation_operation(client, recommendation):
    """Creates a ApplyRecommendationOperation to apply the given recommendation.

    Args:
        client: an initialized GoogleAdsClient instance.
        customer_id: a client customer ID.
        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 = 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::V18::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::V18::Resources::Ad->new({
  #   id => "INSERT_AD_ID_AS_INTEGER_HERE"
  # });
  # my $text_ad_parameters =
  #   Google::Ads::GoogleAds::V18::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::V18::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.V18.RecommendationService);

    ApplyRecommendationRequest applyRecommendationRequest = new ApplyRecommendationRequest()
    {
        CustomerId = customerId.ToString(),
    };

    applyRecommendationRequest.Operations.AddRange(operations);

    ApplyRecommendationResponse response =
        recommendationService.ApplyRecommendation(applyRecommendationRequest);
    foreach (ApplyRecommendationResult result in response.Results)
    {
        Console.WriteLine("Applied a recommendation with resource name: " +
            result.ResourceName);
    }
}
      

PHP

private static function applyRecommendations(
    GoogleAdsClient $googleAdsClient,
    int $customerId,
    array $operations
): void {
    // Issues a mutate request to apply the recommendations.
    $recommendationServiceClient = $googleAdsClient->getRecommendationServiceClient();
    $response = $recommendationServiceClient->applyRecommendation(
        ApplyRecommendationRequest::build($customerId, $operations)
    );
    foreach ($response->getResults() as $appliedRecommendation) {
        /** @var Recommendation $appliedRecommendation */
        printf(
            "Applied a recommendation with resource name: '%s'.%s",
            $appliedRecommendation->getResourceName(),
            PHP_EOL
        );
    }
}
      

پایتون

def apply_recommendations(client, customer_id, operations):
    """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 = recommendation_service.apply_recommendation(
        customer_id=customer_id, operations=operations
    )

    for result in response.results:
        print(
            "Applied a recommendation with resource name: "
            f"'{result[0].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};
}
      

برای کسب اطلاعات بیشتر این ویدیوها را تماشا کنید

اعمال پارامترها

فله

خطاها

تست ها

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

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

با RecommendationService می توانید توصیه ها را رد کنید. ساختار کد شبیه به اعمال توصیه‌ها است، اما در عوض از DismissRecommendationOperation و RecommendationService.DismissRecommendation استفاده می‌کنید.

برای کسب اطلاعات بیشتر این ویدیوها را تماشا کنید

فله

خطاها

تست ها

به طور خودکار توصیه ها را اعمال کنید

می‌توانید از RecommendationSubscriptionService برای اعمال خودکار توصیه‌های یک نوع خاص استفاده کنید.

برای اشتراک در یک نوع توصیه خاص، یک شی RecommendationSubscription ایجاد کنید، فیلد type را روی یکی از انواع توصیه های پشتیبانی شده تنظیم کنید و فیلد status را روی ENABLED تنظیم کنید.

انواع توصیه های پشتیبانی شده از طریق اشتراک

  • ENHANCED_CPC_OPT_IN
  • KEYWORD
  • KEYWORD_MATCH_TYPE
  • LOWER_TARGET_ROAS
  • MAXIMIZE_CLICKS_OPT_IN
  • OPTIMIZE_AD_ROTATION
  • RAISE_TARGET_CPA
  • RESPONSIVE_SEARCH_AD
  • RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH
  • SEARCH_PARTNERS_OPT_IN
  • SEARCH_PLUS_OPT_IN
  • SET_TARGET_CPA
  • SET_TARGET_ROAS
  • TARGET_CPA_OPT_IN
  • TARGET_ROAS_OPT_IN
  • USE_BROAD_MATCH_KEYWORD

اشتراک ها را بازیابی کنید

برای دریافت اطلاعات درباره اشتراک‌های پیشنهادی یک حساب، از منبع recommendation_subscription پرس و جو کنید.

برای مشاهده تغییراتی که به‌طور خودکار اعمال شده‌اند، منبع change_event را پرس و جو کنید، change_event.client_type را به GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION فیلتر کنید.

توصیه هایی در ساخت کمپین

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

GenerateRecommendations یک شناسه مشتری، یک نوع کانال تبلیغاتی که باید SEARCH یا PERFORMANCE_MAX باشد، لیستی از انواع توصیه برای تولید، و نقاط داده مختلف وابسته به انواع مشخص شده را به عنوان ورودی می پذیرد. بر اساس داده‌هایی که ارائه می‌کنید، فهرستی از اشیاء Recommendation را خروجی می‌دهد. اگر داده‌های کافی برای ایجاد یک توصیه برای recommendation_types درخواستی وجود نداشته باشد، یا اگر کمپین از قبل در وضعیت توصیه‌شده باشد، مجموعه نتایج حاوی توصیه‌ای برای آن نوع نخواهد بود. مطمئن شوید که برنامه شما به مواردی رسیدگی می‌کند که هیچ توصیه‌ای برای انواع توصیه‌های درخواستی بازگردانده نشده است.

جدول زیر انواع توصیه هایی را که GenerateRecommendations پشتیبانی می کند و فیلدهایی که باید برای دریافت توصیه هایی برای آن نوع ارائه کنید، توضیح می دهد. به عنوان بهترین روش، درخواست GenerateRecommendations را پس از جمع آوری تمام اطلاعات مربوط به انواع توصیه های درخواستی ارسال کنید. برای جزئیات بیشتر در مورد فیلدهای ضروری و اختیاری، از جمله فیلدهای تو در تو، به مستندات مرجع مراجعه کنید.

نوع توصیه فیلدهای مورد نیاز فیلدهای اختیاری
CAMPAIGN_BUDGET (شروع در نسخه 18) برای هر دو کمپین Search و Performance Max، فیلدهای زیر لازم است:
  • 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 تنظیم شده باشد bidding_info.
    bidding_strategy_target_info.
    target_impression_share_info
  • asset_group_info
  • budget_info
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 باشد، می توان آن را به عنوان سیگنالی برای افزودن حداقل یک دارایی پیوند سایت به کمپین در نظر گرفت.
  • 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 را بگیرید و با نمایش آنها در رابط ساخت کمپین خود، به کاربر پیشنهاد دهید. اگر کاربر پیشنهادی را بپذیرد، پس از تکمیل جریان ساخت کمپین، می‌توانید آن را در درخواست ایجاد کمپین بگنجانید.