최적화 점수 및 추천

동영상: 심층 분석

추천은 다음과 같은 몇 가지 방법으로 캠페인을 개선할 수 있습니다.

  • 새롭고 관련성 높은 기능 도입
  • 개선된 입찰가, 키워드, 광고로 예산 대비 효과 극대화
  • 캠페인의 전반적인 실적 및 효율성 향상

최적화 점수를 높이려면 RecommendationService를 사용하여 추천을 가져온 다음 그에 따라 추천을 적용하거나 닫으면 됩니다. Google Ads API v15부터는 RecommendationSubscriptionService를 사용하여 추천을 구독하여 자동으로 적용할 수도 있습니다.

최적화 점수

동영상: 최적화 점수

최적화 점수는 Google Ads 계정이 얼마나 좋은 실적을 낼 수 있을지를 추정한 수치이며 CustomerCampaign 수준에서 사용할 수 있습니다.

Customer.optimization_score_weight는 관리자가 아닌 계정에서만 사용할 수 있으며 여러 계정의 전체 최적화 점수를 계산하는 데 사용됩니다. 계정의 최적화 점수와 최적화 점수 가중치를 가져오고 서로 곱하여(Customer.optimization_score * Customer.optimization_score_weight) 전체 최적화 점수를 계산합니다.

customercampaign 보고서에 사용할 수 있는 최적화 관련 측정항목이 있습니다.

  1. metrics.optimization_score_url는 Google Ads UI에서 관련 추천에 대한 정보를 볼 수 있는 딥 링크를 계정에 제공합니다.
  2. metrics.optimization_score_uplift는 모든 관련 추천을 적용할 경우 최적화 점수가 얼마나 증가하는지를 나타냅니다. 이는 각 추천의 상승 점수 합계가 아니라 사용 가능한 모든 추천을 전체적으로 기반으로 한 추정치입니다.

반환된 추천을 그룹화하고 정렬하기 위해 쿼리에서 segments.recommendation_type을 사용하여 이러한 두 측정항목을 추천 유형별로 분류할 수 있습니다.

추천 유형

완전히 지원되는 추천 유형

RecommendationType 설명
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 디스플레이 네트워크 추가를 사용하도록 캠페인 업데이트
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 계정에서 실적 최대화 캠페인 만들기
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH 실적 최대화 캠페인의 애셋 그룹 효력을 '매우 좋음' 등급으로 높입니다.
PERFORMANCE_MAX_FINAL_URL_OPT_IN 실적 최대화 캠페인에 최종 URL 확장 사용 설정하기
RAISE_TARGET_CPA_BID_TOO_LOW 타겟 CPA가 너무 낮고 전환이 거의 또는 전혀 발생하지 않는 경우 타겟 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 판매자 센터 계정 정지 문제 해결
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 지난 90일 동안 업데이트되지 않은 고객 목록 업데이트
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 객체는 Google Ads 쿼리 언어 쿼리와 함께 GoogleAdsService.SearchStream를 사용하여 가져옵니다.

각 권장사항 유형에 대한 세부정보는 권장사항 관련 필드에 제공됩니다. 예를 들어 CAMPAIGN_BUDGET 권장사항 세부정보는 campaign_budget_recommendation 필드에 있으며 CampaignBudgetRecommendation 객체에 래핑됩니다.

recommendation 통합 필드에서 모든 권장사항 관련 필드를 찾습니다.

추천의 영향

일부 추천 유형은 추천의 impact 필드를 채웁니다. RecommendationImpact에는 추천을 적용한 결과가 계정 실적에 미칠 것으로 예상되는 영향이 포함됩니다. 다음 추천 측정항목impact.base_metricsimpact.potential_metrics 필드에서 사용할 수 있습니다.

  • impressions

  • clicks

  • cost_micros

  • conversions

  • all_conversions (Google Ads API v16부터 사용 가능)

  • video_views

코드 예시

다음 샘플 코드는 계정에서 KEYWORD 유형의 사용 가능한 추천 및 닫은 추천을 모두 검색하고 세부정보를 출력합니다.

Java

try (GoogleAdsServiceClient googleAdsServiceClient =
        googleAdsClient.getLatestVersion().createGoogleAdsServiceClient();
    RecommendationServiceClient recommendationServiceClient =
        googleAdsClient.getLatestVersion().createRecommendationServiceClient()) {
  // Creates a query that retrieves keyword recommendations.
  String query =
      "SELECT recommendation.resource_name, "
          + "  recommendation.campaign, "
          + "  recommendation.keyword_recommendation "
          + "FROM recommendation "
          + "WHERE recommendation.type = KEYWORD";
  // Constructs the SearchGoogleAdsStreamRequest.
  SearchGoogleAdsStreamRequest request =
      SearchGoogleAdsStreamRequest.newBuilder()
          .setCustomerId(Long.toString(customerId))
          .setQuery(query)
          .build();

  // Issues the search stream request to detect keyword recommendations that exist for the
  // customer account.
  ServerStream<SearchGoogleAdsStreamResponse> stream =
      googleAdsServiceClient.searchStreamCallable().call(request);

  // Creates apply operations for all the recommendations found.
  List<ApplyRecommendationOperation> applyRecommendationOperations = new ArrayList<>();
  for (SearchGoogleAdsStreamResponse response : stream) {
    for (GoogleAdsRow googleAdsRow : response.getResultsList()) {
      Recommendation recommendation = googleAdsRow.getRecommendation();
      System.out.printf(
          "Keyword recommendation '%s' was found for campaign '%s'%n",
          recommendation.getResourceName(), recommendation.getCampaign());
      KeywordInfo keyword = recommendation.getKeywordRecommendation().getKeyword();
      System.out.printf("\tKeyword = '%s'%n", keyword.getText());
      System.out.printf("\tMatch type = '%s'%n", keyword.getMatchType());

      // Creates an ApplyRecommendationOperation that will apply this recommendation, and adds
      // it to the list of operations.
      applyRecommendationOperations.add(buildRecommendationOperation(recommendation));
    }
  }
      

C#

// Get the GoogleAdsServiceClient.
GoogleAdsServiceClient googleAdsService = client.GetService(
    Services.V16.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;
}
      

2,399필리핀

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

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

Python

googleads_service = client.get_service("GoogleAdsService")
query = 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)
    )
      

Ruby

query = <<~QUERY
  SELECT recommendation.resource_name, recommendation.campaign,
      recommendation.keyword_recommendation
  FROM recommendation
  WHERE recommendation.type = KEYWORD
QUERY

google_ads_service = client.service.google_ads

response = google_ads_service.search(
  customer_id: customer_id,
  query: query,
)

operations = response.each do |row|
  recommendation = row.recommendation

  puts "Keyword recommendation ('#{recommendation.resource_name}') was found for "\
    "campaign '#{recommendation.campaign}'."

  if recommendation.keyword_recommendation
    keyword = recommendation.keyword_recommendation.keyword
    puts "\tKeyword = '#{keyword.text}'"
    puts "\ttype = '#{keyword.match_type}'"
  end

  build_recommendation_operation(client, recommendation.resource_name)
end
      

Perl

# Create the search query.
my $search_query =
  "SELECT recommendation.resource_name, " .
  "recommendation.campaign, recommendation.keyword_recommendation " .
  "FROM recommendation " .
  "WHERE recommendation.type = KEYWORD";

# Get the GoogleAdsService.
my $google_ads_service = $api_client->GoogleAdsService();

my $search_stream_handler =
  Google::Ads::GoogleAds::Utils::SearchStreamHandler->new({
    service => $google_ads_service,
    request => {
      customerId => $customer_id,
      query      => $search_query
    }});

# Create apply operations for all the recommendations found.
my $apply_recommendation_operations = ();
$search_stream_handler->process_contents(
  sub {
    my $google_ads_row = shift;
    my $recommendation = $google_ads_row->{recommendation};
    printf "Keyword recommendation '%s' was found for campaign '%s'.\n",
      $recommendation->{resourceName}, $recommendation->{campaign};
    my $keyword = $recommendation->{keywordRecommendation}{keyword};
    printf "\tKeyword = '%s'\n",    $keyword->{text};
    printf "\tMatch type = '%s'\n", $keyword->{matchType};
    # Creates an ApplyRecommendationOperation that will apply this recommendation, and adds
    # it to the list of operations.
    push @$apply_recommendation_operations,
      build_recommendation_operation($recommendation);
  });
      

조치 취하기

가져온 추천을 적용하거나 닫을 수 있습니다.

추천 유형에 따라 추천은 매일 또는 하루에 여러 번 변경될 수 있습니다. 이 경우 권장사항을 가져온 후 권장사항 객체의 resource_name가 더 이상 사용되지 않을 수 있습니다.

검색 직후에 권장 사항에 대해 조치를 취하는 것이 좋습니다.

추천 적용

동영상: 추천 적용

RecommendationServiceApplyRecommendation 메서드를 사용하여 활성 상태이거나 닫은 추천을 적용할 수 있습니다.

추천 유형에는 필수 또는 선택적 매개변수가 있을 수 있습니다. 대부분의 권장사항에는 기본적으로 사용되는 권장 값이 함께 제공됩니다.

일부 추천 유형에는 추천 자동 적용 계정 설정이 지원되지 않습니다. 그러나 Google Ads API에서 완전히 지원하는 추천 유형에 대해 유사한 동작을 구현할 수 있습니다. 자세한 내용은 DetectAndApplyRecommendations 코드 예를 참고하세요.

특정 매개변수 값이 있는 권장사항을 적용하려면 ApplyRecommendationOperationapply_parameters 공용체 필드를 사용합니다. 적합한 추천 유형마다 자체 필드가 있습니다. apply_parameters 필드에 나열되지 않은 추천 유형은 이러한 매개변수 값을 사용하지 않습니다.

코드 예시

다음 코드는 ApplyRecommendationOperation를 빌드하는 방법과 권장 값을 자체 값으로 바꾸려는 경우 그 값을 재정의하는 방법을 보여줍니다.

Java

/** Creates and returns an ApplyRecommendationOperation to apply the given recommendation. */
private ApplyRecommendationOperation buildRecommendationOperation(Recommendation recommendation) {
  // If you have a recommendation ID instead of a resource name, you can create a resource name
  // like this:
  // String resourceName = ResourceNames.recommendation(customerId, recommendationId);

  // Creates a builder to construct the operation.
  Builder operationBuilder = ApplyRecommendationOperation.newBuilder();

  // Each recommendation type has optional parameters to override the recommended values. Below is
  // an example showing how to override a recommended ad when a TextAdRecommendation is applied.
  // operationBuilder.getTextAdBuilder().getAdBuilder().setResourceName("INSERT_AD_RESOURCE_NAME");

  // Sets the operation's resource name to the resource name of the recommendation to apply.
  operationBuilder.setResourceName(recommendation.getResourceName());
  return operationBuilder.build();
}
      

C#

private ApplyRecommendationOperation BuildApplyRecommendationOperation(
    string recommendationResourceName
)
{
    // If you have a recommendation_id instead of the resource_name you can create a
    // resource name from it like this:
    // string recommendationResourceName =
    //    ResourceNames.Recommendation(customerId, recommendationId)

    // Each recommendation type has optional parameters to override the recommended values.
    // This is an example to override a recommended ad when a TextAdRecommendation is
    // applied.
    // For details, please read
    // https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation.
    /*
    Ad overridingAd = new Ad()
    {
        Id = "INSERT_AD_ID_AS_LONG_HERE"
    };
    applyRecommendationOperation.TextAd = new TextAdParameters()
    {
        Ad = overridingAd
    };
    */

    ApplyRecommendationOperation applyRecommendationOperation =
    new ApplyRecommendationOperation()
    {
        ResourceName = recommendationResourceName
    };

    return applyRecommendationOperation;
}
      

2,399필리핀

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

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

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

Python

def build_recommendation_operation(client, 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
      

Ruby

def build_recommendation_operation(client, recommendation)
  # If you have a recommendation_id instead of the resource_name
  # you can create a resource name from it like this:
  # recommendation_resource =
  #    client.path.recommendation(customer_id, recommendation_id)

  operations = client.operation.apply_recommendation
  operations.resource_name = recommendation_resource

  # Each recommendation type has optional parameters to override the recommended
  # values. This is an example to override a recommended ad when a
  # TextAdRecommendation is applied.
  #
  # text_ad_parameters = client.resource.text_ad_parameters do |tap|
  #   tap.ad = client.resource.ad do |ad|
  #     ad.id = "INSERT_AD_ID_AS_INTEGER_HERE"
  #   end
  # end
  # operation.text_ad = text_ad_parameters
  #
  # For more details, see:
  # https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation#apply_parameters

  return operation
end
      

Perl

sub build_recommendation_operation {
  my ($recommendation) = @_;

  # If you have a recommendation ID instead of a resource name, you can create a resource
  # name like this:
  # my $recommendation_resource_name =
  #   Google::Ads::GoogleAds::V16::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::V16::Resources::Ad->new({
  #   id => "INSERT_AD_ID_AS_INTEGER_HERE"
  # });
  # my $text_ad_parameters =
  #   Google::Ads::GoogleAds::V16::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::V16::Services::RecommendationService::ApplyRecommendationOperation
    ->new({
      resourceName => $recommendation->{resourceName}});

  return $apply_recommendation_operation;
}
      

다음 예시에서는 ApplyRecommendation를 호출하여 이전 코드에서 만든 추천 적용 작업을 전송합니다.

Java

// Issues a mutate request to apply the recommendations.
ApplyRecommendationResponse applyRecommendationsResponse =
    recommendationServiceClient.applyRecommendation(
        Long.toString(customerId), applyRecommendationOperations);
for (ApplyRecommendationResult applyRecommendationResult :
    applyRecommendationsResponse.getResultsList()) {
  System.out.printf(
      "Applied recommendation with resource name: '%s'.%n",
      applyRecommendationResult.getResourceName());
}
      

C#

private void ApplyRecommendation(GoogleAdsClient client, long customerId,
    List<ApplyRecommendationOperation> operations)
{
    // Get the RecommendationServiceClient.
    RecommendationServiceClient recommendationService = client.GetService(
        Services.V16.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);
    }
}
      

2,399필리핀

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

Python

def apply_recommendations(client, 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}'."
        )
      

Ruby

def apply_recommendations(client, customer_id, operations)
  # Issues a mutate request to apply the recommendation.
  recommendation_service = client.service.recommendation

  response = recommendation_service.apply_recommendation(
    customer_id: customer_id,
    operations: [operations],
  )

  response.results.each do |applied_recommendation|
    puts "Applied recommendation with resource name: '#{applied_recommendation.resource_name}'."
  end
end
      

Perl

# Issue a mutate request to apply the recommendations.
my $apply_recommendation_response =
  $api_client->RecommendationService()->apply({
    customerId => $customer_id,
    operations => $apply_recommendation_operations
  });

foreach my $result (@{$apply_recommendation_response->{results}}) {
  printf "Applied recommendation with resource name: '%s'.\n",
    $result->{resourceName};
}
      

자세히 알아보려면 동영상을 시청하세요.

매개변수 적용

단체메일

오류

테스트

추천 닫기

동영상: 추천 닫기

RecommendationService를 사용하여 권장사항을 닫을 수 있습니다. 코드 구조는 권장사항 적용과 비슷하지만 대신 DismissRecommendationOperationRecommendationService.DismissRecommendation를 사용합니다.

자세히 알아보려면 동영상을 시청하세요.

단체메일

오류

테스트

추천 자동 적용

Google Ads API v15부터는 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_client_typeGOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION로 필터링하여 change_event 리소스를 쿼리합니다.

캠페인 구성 시 추천

Google Ads API v16부터는 RecommendationService.GenerateRecommendationsRequest를 사용하여 캠페인을 구성하는 동안 특정 추천 유형 집합에 대한 추천을 생성할 수 있습니다.

GenerateRecommendations는 고객 ID, 광고 채널 유형(SEARCH 또는 PERFORMANCE_MAX이어야 함), 생성할 추천 유형 목록, 지정된 유형에 따른 다양한 데이터 포인트를 입력으로 허용합니다. 개발자가 제공하는 데이터를 기반으로 Recommendation 객체 목록이 출력됩니다. 요청된 recommendation_types에 대한 추천을 생성하기 위한 데이터가 충분하지 않거나 캠페인이 이미 권장 상태에 있는 경우 결과 세트에 해당 유형의 추천이 포함되지 않습니다. 요청된 추천 유형에 추천이 반환되지 않는 경우를 애플리케이션에서 처리해야 합니다.

다음 표에서는 GenerateRecommendations에서 지원하는 추천 유형과 이러한 유형의 추천을 받기 위해 제공해야 하는 필드를 설명합니다. 요청된 추천 유형과 관련된 모든 정보가 수집된 후에 GenerateRecommendations 요청을 전송하는 것이 좋습니다. 중첩 필드를 포함하여 필수 및 선택 필드에 대한 자세한 내용은 참조 문서를 확인하세요.

RecommendationType 필수 입력란 선택적 필드
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. 사용자가 앱을 찾아 실적 최대화 캠페인을 만듭니다.

  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: 캠페인을 만드는 고객의 ID로 설정합니다.

  4. GenerateRecommendationsResponse에서 권장사항(이 경우 SitelinkAssetRecommendationMaximizeClicksOptInRecommendation)을 가져와 캠페인 구성 인터페이스 내에 표시하여 사용자에게 제안할 수 있습니다. 사용자가 추천을 수락하면 사용자가 캠페인 구성 과정을 완료하면 캠페인 만들기 요청에 추천을 포함할 수 있습니다.