← 返回目录
来源:Google Ads API 官方文档 · 中文版 · 本地归档

优化得分和建议

视频:深入探究

建议可以通过以下几种方式提升广告系列的效果:

  • 推出新的相关功能
  • 通过改进出价、关键字和广告,让您的预算发挥更大效用
  • 提升广告系列的整体效果和效率

如需提高优化得分,您可以使用 RecommendationService 检索建议,然后根据需要采纳或拒绝这些建议。您还可以使用 RecommendationSubscriptionService 订阅自动采纳建议功能。

优化得分

视频:优化得分

优化得分是一个估算的分值,反映了您的 Google Ads 账号在设置方面的优化程度,可在Customer和Campaign级别查看。

customer 和 campaign 报告提供以下与优化相关的指标:

  1. metrics.optimization_score_url提供了一个指向账号的深层链接,以便在 Google Ads 界面中查看相关建议的信息。
  2. metrics.optimization_score_uplift表示如果采纳所有相关建议,优化得分会提高多少。这是根据所有可用的建议整体估算的,而不仅仅是每项建议的得分提升幅度之和。

如需对返回的建议进行分组和排序,您可以在查询中使用 segments.recommendation_type 按建议类型细分这两个指标。

推荐类型

完全支持的建议类型

RecommendationType 说明
CAMPAIGN_BUDGET 修正受预算限制的广告系列
KEYWORD 添加新关键字
TEXT_AD 添加推荐广告
TARGET_CPA_OPT_IN 采用“目标每次转化费用”出价策略
MAXIMIZE_CONVERSIONS_OPT_IN 采用“尽可能提高转化次数”出价策略
MAXIMIZE_CONVERSION_VALUE_OPT_IN 采用“尽可能提高转化价值”出价策略
ENHANCED_CPC_OPT_IN 采用“智能点击付费”出价策略
MAXIMIZE_CLICKS_OPT_IN 采用“尽可能争取更多点击次数”出价策略
OPTIMIZE_AD_ROTATION 采用优化型广告轮播设置
MOVE_UNUSED_BUDGET 将未使用的预算转移到受限预算
TARGET_ROAS_OPT_IN 采用“目标广告支出回报率”出价策略
FORECASTING_CAMPAIGN_BUDGET 修正预计未来会受预算限制的广告系列
RESPONSIVE_SEARCH_AD 添加新的自适应搜索广告
MARGINAL_ROI_CAMPAIGN_BUDGET 调整广告系列预算以提高投资回报率
USE_BROAD_MATCH_KEYWORD 为采用自动出价的以促成转化为目标的广告系列使用广泛匹配
RESPONSIVE_SEARCH_AD_ASSET 为广告添加自适应搜索广告素材资源
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH 提升自适应搜索广告的效力
DISPLAY_EXPANSION_OPT_IN 更新广告系列以使用将展示广告网络也纳入投放范围
SEARCH_PARTNERS_OPT_IN 利用 Google 搜索网络合作伙伴扩大覆盖面
CUSTOM_AUDIENCE_OPT_IN 创建自定义受众群体
IMPROVE_DEMAND_GEN_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 为效果最大化广告系列启用“最终到达网址扩展”功能
RAISE_TARGET_CPA_BID_TOO_LOW 如果目标每次转化费用过低,且转化次数很少或没有,请提高目标每次转化费用
FORECASTING_SET_TARGET_ROAS 在预计会增加流量的季节性活动之前提高预算,并将出价策略从“尽可能提高转化价值”更改为“目标广告支出回报率”
LEAD_FORM_ASSET 向广告系列添加潜在客户表单素材资源
CALLOUT_ASSET 向广告系列或客户级添加宣传信息素材资源
SITELINK_ASSET 向广告系列或客户级添加站内链接素材资源
CALL_ASSET 向广告系列或客户级添加电话素材资源
SHOPPING_ADD_AGE_GROUP 为因缺少年龄段而降级的商品添加年龄段属性
SHOPPING_ADD_COLOR 为因缺少颜色而被降级的商品添加颜色
SHOPPING_ADD_GENDER 为因缺少适用性别而被降级的产品添加适用性别
SHOPPING_ADD_GTIN 为因缺少 GTIN 而被降级的商品添加 GTIN(全球贸易项目代码)
SHOPPING_ADD_MORE_IDENTIFIERS 为因缺少标识码而被降级的商品添加更多标识码
SHOPPING_ADD_SIZE 为因缺少尺码而被降级的商品添加尺码
SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN 为广告系列添加产品以使其能够投放
SHOPPING_FIX_DISAPPROVED_PRODUCTS 解决商品被拒登的问题
SHOPPING_TARGET_ALL_OFFERS 制作一个定位所有商品的“全包型”广告系列
SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT 解决 Merchant Center 账号中止问题
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING 解决 Merchant Center 账号中止警告问题
DYNAMIC_IMAGE_EXTENSION_OPT_IN 在账号中启用动态图片附加信息
RAISE_TARGET_CPA 提高目标每次转化费用
LOWER_TARGET_ROAS 降低目标广告支出回报率
FORECASTING_SET_TARGET_CPA 在预计会增加流量的季节性活动开始之前,为未指定目标每次转化费用的广告系列设置目标每次转化费用
SET_TARGET_CPA 为未指定目标每次转化费用的广告系列设置目标每次转化费用
SET_TARGET_ROAS 为未指定目标广告支出回报率的广告系列设置目标广告支出回报率
REFRESH_CUSTOMER_MATCH_LIST 更新过去 90 天内未更新的客户名单
IMPROVE_GOOGLE_TAG_COVERAGE 在更多网页上部署 Google 代码
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

即使 impact 字段已填充,指标的可用性也会因建议类型和广告系列类型等因素而异。一般来说,在尝试使用每种影响指标之前,请先检查其是否可用。

代码示例

以下示例代码从账号中检索类型为 KEYWORD 的所有可用建议和已关闭建议,并输出其中一些建议的详细信息:

Java

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

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

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

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

C#

// Get the GoogleAdsServiceClient.
GoogleAdsServiceClient googleAdsService = client.GetService(
    Services.V25.GoogleAdsService);

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

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

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

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

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

PHP

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

$operations = [];
// Iterates over all rows in all pages and prints the requested field values for
// the recommendation in each row.
foreach ($response->iterateAllElements() as $googleAdsRow) {
    /** @var GoogleAdsRow $googleAdsRow */
    $recommendation = $googleAdsRow->getRecommendation();
    printf(
        "Keyword recommendation with resource name '%s' was found for campaign "
        . "with resource name '%s':%s",
        $recommendation->getResourceName(),
        $recommendation->getCampaign(),
        PHP_EOL
    );
    if (!is_null($recommendation->getKeywordRecommendation())) {
        $keyword = $recommendation->getKeywordRecommendation()->getKeyword();
        printf(
            "\tKeyword = '%s'%s\ttype = '%s'%s",
            $keyword->getText(),
            PHP_EOL,
            KeywordMatchType::name($keyword->getMatchType()),
            PHP_EOL
        );
    }
    // Creates an ApplyRecommendationOperation that will be used to apply this
    // recommendation, and adds it to the list of operations.
    $operations[] = self::buildRecommendationOperation($recommendation->getResourceName());
}
在接这个接口时卡住了?
Stuck wiring this API into production? We build ad-delivery tooling on these platforms — campaign automation, reporting pipelines, error-handling and migration between API versions.
联系我们 · Talk to us 每日平台更新简报 →