الاقتراحات

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

الفيديو: نظرة متعمّقة

يمكن أن تؤدي الاقتراحات إلى تحسين حملاتك بعدة طرق:

  • تقديم ميزات جديدة وذات صلة
  • الاستفادة بشكل أفضل من ميزانيتك باستخدام عروض أسعار وكلمات رئيسية وإعلانات محسّنة
  • رفع مستوى أداء حملاتك وكفاءتها بوجهٍ عام

لزيادة نتائج التحسين، يمكنك استخدام RecommendationService لاسترداد الاقتراحات، ثم تطبيقها أو رفضها وفقًا لذلك.

نتيجة التحسين

الفيديو: نظرة متعمّقة

نتيجة التحسين هي تقدير لمدى جودة أداء حسابك على "إعلانات Google" وتوفُّره على مستويَي Customer وCampaign.

لا تتوفر Customer.optimization_score_weight إلا للحسابات غير الإدارية، وهي تُستخدم لاحتساب نتيجة التحسين الإجمالية لحسابات متعددة. استرداد نتيجة التحسين وزن نتيجة التحسين للحسابات وضربهما معًا (Customer.optimization_score * Customer.optimization_score_weight) لحساب نتيجة التحسين الإجمالية.

تتوفّر مقاييس ذات صلة بالتحسينات لتقارير customer وcampaign:

  1. يقدّم metrics.optimization_score_url رابطًا لصفحة في الحساب لعرض معلومات عن الاقتراحات ذات الصلة في واجهة مستخدم "إعلانات Google".
  2. يوضّح metrics.optimization_score_uplift مدى الارتفاع في نتيجة التحسين إذا تم تطبيق كل الاقتراحات ذات الصلة.

optimization_score_uplift ليست سوى رقم تقريبي. ويرجع ذلك إلى أنّه يتم احتساب الزيادة في التحسين بشكلٍ فردي لكل اقتراح، وقد لا يكون التأثير المجمّع لتنفيذ عدة اقتراحات مجموعًا صارمًا لكل فرد على حدة.

أنواع الاقتراحات

الفيديو: التعامل مع الأنواع غير المتوافقة

تتيح Google Ads API استخدام أنواع الاقتراحات التالية بشكل كامل:

نوع الاقتراح الوصف
CAMPAIGN_BUDGET إصلاح الحملات ضمن حدود الميزانية
KEYWORD إضافة كلمات رئيسية جديدة
TEXT_AD إضافة اقتراحات الإعلانات
TARGET_CPA_OPT_IN تقديم عروض أسعار مع التكلفة المستهدفة للإجراء
MAXIMIZE_CONVERSIONS_OPT_IN تقديم عروض الأسعار مع تحقيق الحد الأقصى من الإحالات الناجحة
ENHANCED_CPC_OPT_IN تقديم عروض الأسعار بتكلفة النقرة المحسّنة
SEARCH_PARTNERS_OPT_IN توسيع مدى وصولك من خلال الشركاء في "شبكة بحث Google"
MAXIMIZE_CLICKS_OPT_IN تقديم عروض الأسعار باستخدام "الحصول على الحد الأقصى من النقرات"
OPTIMIZE_AD_ROTATION استخدام عرض الإعلانات بالتناوب المحسّن
CALLOUT_EXTENSION إدراج إضافات وسائل الشرح في الحملة
SITELINK_EXTENSION إدراج إضافات روابط أقسام الموقع إلى الحملة
CALL_EXTENSION إدراج إضافات المكالمات في الحملة
KEYWORD_MATCH_TYPE (deprecated) تغيير أنواع مطابقة الكلمات الرئيسية
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 إضافة مواد عرض الإعلان المتجاوب على شبكة البحث إلى إعلان
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX ترقية حملة Shopping ذكية إلى حملة أداء أفضل
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH تحسين قوة الإعلان المتجاوب على شبكة البحث
DISPLAY_EXPANSION_OPT_IN تعديل حملة لاستخدام ميزة الانتشار على "الشبكة الإعلانية"
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX ترقية حملة محلية قديمة إلى حملة أداء أفضل

استرداد الاقتراحات

الفيديو: الترميز المباشر

مثل معظم الكيانات الأخرى في Google Ads API، يتم استرجاع Recommendation Objects باستخدام GoogleAdsService.SearchStream مع طلب البحث بلغة "إعلانات Google".

بالنسبة إلى كل نوع من الاقتراحات، يتم توفير تفاصيل الاقتراح في حقل recommendation محدّد مع نوع معيّن:

نوع الاقتراح الاقتراح النوع
CAMPAIGN_BUDGET campaign_budget_recommendation CampaignBudgetRecommendation
KEYWORD keyword_recommendation KeywordRecommendation
TEXT_AD text_ad_recommendation TextAdRecommendation
TARGET_CPA_OPT_IN target_cpa_opt_in_recommendation TargetCpaOptInRecommendation
MAXIMIZE_CONVERSIONS_OPT_IN maximize_conversions_opt_in_recommendation MaximizeConversionsOptInRecommendation
ENHANCED_CPC_OPT_IN enhanced_cpc_opt_in_recommendation EnhancedCpcOptInRecommendation
SEARCH_PARTNERS_OPT_IN search_partners_opt_in_recommendation SearchPartnersOptInRecommendation
MAXIMIZE_CLICKS_OPT_IN maximize_clicks_opt_in_recommendation MaximizeClicksOptInRecommendation
OPTIMIZE_AD_ROTATION optimize_ad_rotation_recommendation OptimizeAdRotationRecommendation
CALLOUT_EXTENSION callout_extension_recommendation CalloutExtensionRecommendation
SITELINK_EXTENSION sitelink_extension_recommendation SitelinkExtensionRecommendation
CALL_EXTENSION call_extension_recommendation CallExtensionRecommendation
KEYWORD_MATCH_TYPE (متوقّف) keyword_match_type_recommendation KeywordMatchTypeRecommendation
MOVE_UNUSED_BUDGET move_unused_budget_recommendation MoveUnusedBudgetRecommendation
TARGET_ROAS_OPT_IN target_roas_opt_in_recommendation TargetRoasOptInRecommendation
FORECASTING_CAMPAIGN_BUDGET forecasting_campaign_budget_recommendation CampaignBudgetRecommendation
RESPONSIVE_SEARCH_AD responsive_search_ad_recommendation ResponsiveSearchAdRecommendation
MARGINAL_ROI_CAMPAIGN_BUDGET marginal_roi_campaign_budget_recommendation CampaignBudgetRecommendation
USE_BROAD_MATCH_KEYWORD use_broad_match_keyword_recommendation UseBroadMatchKeywordRecommendation
RESPONSIVE_SEARCH_AD_ASSET responsive_search_ad_asset_recommendation ResponsiveSearchAdAssetRecommendation
DISPLAY_EXPANSION_OPT_IN display_expansion_opt_in_recommendation DisplayExpansionOptInRecommendation
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX upgrade_local_campaign_to_performance_max_recommendation UpgradeLocalCampaignToPerformanceMaxRecommendation

يسترد نموذج الرمز التالي جميع الاقتراحات المتاحة والمرفوضة من النوع TEXT_AD من الحساب ويطبع بعض تفاصيله:

Java

private void runExample(GoogleAdsClient googleAdsClient, long customerId) {
  try (GoogleAdsServiceClient googleAdsServiceClient =
      googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) {
    String query =
        "SELECT recommendation.type, "
            + "recommendation.campaign, "
            + "recommendation.text_ad_recommendation "
            + "FROM recommendation "
            + "WHERE recommendation.type = TEXT_AD";

    // Creates a request that will retrieve all recommendations using pages of the
    // specified page size.
    SearchGoogleAdsRequest request =
        SearchGoogleAdsRequest.newBuilder()
            .setCustomerId(Long.toString(customerId))
            .setPageSize(PAGE_SIZE)
            .setQuery(query)
            .build();
    // Issues the search request.
    SearchPagedResponse searchPagedResponse = googleAdsServiceClient.search(request);

    // Iterates over all rows in all pages and prints the requested field values for the
    // recommendation in each row.
    for (GoogleAdsRow googleAdsRow : searchPagedResponse.iterateAll()) {
      Recommendation recommendation = googleAdsRow.getRecommendation();
      Ad recommendedAd = recommendation.getTextAdRecommendation().getAd();

      System.out.printf(
          "Recommendation ('%s') was found for campaign '%s':%n",
          recommendation.getResourceName(), recommendation.getCampaign());
      if (recommendedAd.hasExpandedTextAd()) {
        ExpandedTextAdInfo eta = recommendedAd.getExpandedTextAd();
        System.out.printf(
            "\tHeadline 1 = '%s'%n" + "\tHeadline 2 = '%s'%n" + "\tDescription = '%s'%n",
            eta.getHeadlinePart1(), eta.getHeadlinePart2(), eta.getDescription());
      }
      if (recommendedAd.getDisplayUrl() != null) {
        System.out.printf("\tDisplay URL = '%s'%n", recommendedAd.getDisplayUrl());
      }
      for (String url : recommendedAd.getFinalUrlsList()) {
        System.out.printf("\tFinal URL = '%s'%n", url);
      }
      for (String url : recommendedAd.getFinalMobileUrlsList()) {
        System.out.printf("\tFinal Mobile URL = '%s'%n", url);
      }
    }
  }
}
      

#C

public void Run(GoogleAdsClient client, long customerId)
{
    // Get the GoogleAdsServiceClient .
    GoogleAdsServiceClient service = client.GetService(Services.V11.GoogleAdsService);

    string query =
        @"SELECT
        recommendation.type,
        recommendation.campaign,
        recommendation.text_ad_recommendation
    FROM
        recommendation
    WHERE
        recommendation.type = TEXT_AD";

    // Create a request that will retrieve all recommendations using pages of the
    // specified page size.
    SearchGoogleAdsRequest request = new SearchGoogleAdsRequest()
    {
        CustomerId = customerId.ToString(),
        PageSize = PAGE_SIZE,
        Query = query
    };

    try
    {
        // Issue the search request.
        PagedEnumerable<SearchGoogleAdsResponse, GoogleAdsRow> searchPagedResponse =
            service.Search(customerId.ToString(), query);

        // Iterates over all rows in all pages and prints the requested field values
        // for the recommendation in each row.
        foreach (GoogleAdsRow googleAdsRow in searchPagedResponse)
        {
            Recommendation recommendation = googleAdsRow.Recommendation;
            // ...
        }
    }
    catch (GoogleAdsException e)
    {
        Console.WriteLine("Failure:");
        Console.WriteLine($"Message: {e.Message}");
        Console.WriteLine($"Failure: {e.Failure}");
        Console.WriteLine($"Request ID: {e.RequestId}");
        throw;
    }
}
      

PHP

public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId)
{
    $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
    // Creates a query that retrieves recommendations for text ads.
    $query = 'SELECT recommendation.type, recommendation.campaign, '
        . 'recommendation.text_ad_recommendation '
        . 'FROM recommendation '
        . 'WHERE recommendation.type = TEXT_AD';

    // Issues a search request by specifying page size.
    $response =
        $googleAdsServiceClient->search($customerId, $query, ['pageSize' => self::PAGE_SIZE]);

    // 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(
            "Recommendation with resource name '%s' was found for campaign "
            . "with resource name '%s':%s",
            $recommendation->getResourceName(),
            $recommendation->getCampaign(),
            PHP_EOL
        );
        $recommendedAd = $recommendation->getTextAdRecommendation()->getAd();
        if (!is_null($recommendedAd->getExpandedTextAd())) {
            $recommendedExpandedTextAd = $recommendedAd->getExpandedTextAd();
            printf(
                "\tHeadline part 1 is '%s'.%s",
                $recommendedExpandedTextAd->getHeadlinePart1(),
                PHP_EOL
            );
            printf(
                "\tHeadline part 2 is '%s'.%s",
                $recommendedExpandedTextAd->getHeadlinePart2(),
                PHP_EOL
            );
            printf(
                "\tDescription is '%s'%s",
                $recommendedExpandedTextAd->getDescription(),
                PHP_EOL
            );
        }
        if (!is_null($recommendedAd->getDisplayUrl())) {
            printf("\tDisplay URL is '%s'.%s", $recommendedAd->getDisplayUrl(), PHP_EOL);
        }
        foreach ($recommendedAd->getFinalUrls() as $finalUrl) {
            /** @var string $finalUrl */
            printf("\tFinal URL is '%s'.%s", $finalUrl, PHP_EOL);
        }
        foreach ($recommendedAd->getFinalMobileUrls() as $finalMobileUrl) {
            /** @var string $finalMobileUrl */
            printf("\tFinal Mobile URL is '%s'.%s", $finalMobileUrl, PHP_EOL);
        }
    }
}
      

Python

def main(client, customer_id):
    ga_service = client.get_service("GoogleAdsService")

    query = """
        SELECT
          recommendation.type,
          recommendation.campaign,
          recommendation.text_ad_recommendation
        FROM recommendation
        WHERE recommendation.type = TEXT_AD"""

    search_request = client.get_type("SearchGoogleAdsStreamRequest")
    search_request.customer_id = customer_id
    search_request.query = query
    stream = ga_service.search_stream(request=search_request)

    for batch in stream:
        for row in batch.results:
            recommendation = row.recommendation
            recommended_ad = recommendation.text_ad_recommendation.ad
            print(
                f'Recommendation ("{recommendation.resource_name}") '
                f'was found for campaign "{recommendation.campaign}".'
            )

            if recommended_ad.display_url:
                print(f'\tDisplay URL = "{recommended_ad.display_url}"')

            for url in recommended_ad.final_urls:
                print(f'\tFinal URL = "{url}"')

            for url in recommended_ad.final_mobile_urls:
                print(f'\tFinal Mobile URL = "{url}"')
      

لغة Ruby

def get_text_ad_recommendations(customer_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new

  ga_service = client.service.google_ads

  query = <<~QUERY
    SELECT recommendation.type, recommendation.campaign,
        recommendation.text_ad_recommendation
    FROM recommendation
    WHERE recommendation.type = TEXT_AD
  QUERY

  response = ga_service.search(
    customer_id: customer_id,
    query: query,
    page_size: PAGE_SIZE,
  )

  response.each do |row|
    recommendation = row.recommendation
    recommended_ad = recommendation.text_ad_recommendation.ad

    puts "Recommendation ('#{recommendation.resource_name}') was found for "\
        "campaign '#{recommendation.campaign}'."
    if recommended_ad.expanded_text_ad
      eta = recommended_ad.expanded_text_ad
      puts "\tHeadline 1 = '#{eta.headline_part1}'\n\tHeadline2 = '#{eta.headline_part2}'\n" +
          "\tDescription = '#{eta.description}'"
    end
    if recommended_ad.display_url
      puts "\tDisplay URL = '#{recommended_ad.display_url}'"
    end
    recommended_ad.final_urls.each do |url|
      puts "\tFinal Url = '#{url}'"
    end
    recommended_ad.final_mobile_urls.each do |url|
      puts "\tFinal Mobile Url = '#{url}'"
    end
  end
end
      

Perl

sub get_text_ad_recommendations {
  my ($api_client, $customer_id) = @_;

  # Creates the search query.
  my $search_query =
    "SELECT recommendation.type, recommendation.campaign, " .
    "recommendation.text_ad_recommendation " .
    "FROM recommendation WHERE recommendation.type = TEXT_AD";

  # Create a search Google Ads request that will retrieve all recommendations for
  # text ads using pages of the specified page size.
  my $search_request =
    Google::Ads::GoogleAds::V11::Services::GoogleAdsService::SearchGoogleAdsRequest
    ->new({
      customerId => $customer_id,
      query      => $search_query,
      pageSize   => PAGE_SIZE
    });

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

  my $iterator = Google::Ads::GoogleAds::Utils::SearchGoogleAdsIterator->new({
    service => $google_ads_service,
    request => $search_request
  });

  # Iterate over all rows in all pages and print the requested field values for
  # the recommendation in each row.
  while ($iterator->has_next) {
    my $google_ads_row = $iterator->next;
    my $recommendation = $google_ads_row->{recommendation};
    printf
      "Recommendation '%s' was found for campaign '%s':\n",
      $recommendation->{resourceName},
      $recommendation->{campaign};

    my $recommended_ad = $recommendation->{textAdRecommendation}{ad};
    if ($recommended_ad->{expandedTextAd}) {
      my $recommended_expanded_text_ad = $recommended_ad->{expandedTextAd};

      printf "\tHeadline part 1 is '%s'.\n" .
        "\tHeadline part 2 is '%s'.\n" . "\tDescription is '%s'.\n",
        $recommended_expanded_text_ad->{headlinePart1},
        $recommended_expanded_text_ad->{headlinePart2},
        $recommended_expanded_text_ad->{description};
    }

    if ($recommended_ad->{displayUrl}) {
      printf "\tDisplay URL is '%s'.\n", $recommended_ad->{displayUrl};
    }

    foreach my $final_url (@{$recommended_ad->{finalUrls}}) {
      printf "\tFinal URL is '%s'.\n", $final_url;
    }

    foreach my $final_mobile_url (@{$recommended_ad->{finalMobileUrls}}) {
      printf "\tFinal Mobile URL is '%s'.\n", $final_mobile_url;
    }
  }

  return 1;
}
      

اتّخاذ إجراء

ويمكن تطبيق أي اقتراح تم استرداده أو رفضه.

ويمكن أن تتغير الاقتراحات على أساس يومي أو حتى عدة مرات يوميًا، بناءً على نوع الاقتراح. في هذه الحالة، يمكن أن يصبح الاقتراح object's resource_name قديمًا بعد استرداد الاقتراح.

من المفيد اتخاذ إجراء بشأن الاقتراحات بعد فترة قصيرة من استردادها.

تطبيق الاقتراحات

الفيديو: نظرة متعمّقة

لا يتوفّر إعداد حسابات للتطبيق التلقائي للاقتراحات في Google Ads API، ولكن يمكنك تنفيذ سلوك مشابه لأنواع الاقتراحات التي تدعمها Google Ads API بالكامل. يمكنك الرجوع إلى مثال الرمز DetectAndApplyRecommendations للاطّلاع على مزيد من المعلومات.

يمكنك تطبيق الاقتراحات النشطة أو المرفوضة باستخدام الطريقة ApplyRecommendation في RecommendationService.

يمكن أن تحتوي أنواع الاقتراحات على معلّمات إلزامية أو اختيارية. وتأتي معظم الاقتراحات مع قيم مقترَحة يتم استخدامها بشكلٍ تلقائي، ويمكنك الاطّلاع على تفاصيل الاقتراحات.

استخدِم apply_parameters حقل ApplyRecommendationOperation لتطبيق الاقتراحات بقيم معلَمات معيّنة. ولكل نوع مناسب من الاقتراحات حقله الخاص. لا يتم استخدام قيم المعلّمات هذه في أي نوع اقتراح غير متوفّر في الجدول.

نوع الاقتراح applied_parameters النوع
CAMPAIGN_BUDGET campaign_budget CampaignBudgetParameters
KEYWORD keyword KeywordParameters
TEXT_AD text_ad TextAdParameters
TARGET_CPA_OPT_IN target_cpa_opt_in TargetCpaOptInParameters
CALLOUT_EXTENSION callout_extension CalloutExtensionParameters
SITELINK_EXTENSION sitelink_extension SitelinkExtensionParameters
CALL_EXTENSION call_extension CallExtensionParameters
MOVE_UNUSED_BUDGET move_unused_budget MoveUnusedBudgetParameters
TARGET_ROAS_OPT_IN target_roas_opt_in TargetRoasOptInParameters
FORECASTING_CAMPAIGN_BUDGET campaign_budget CampaignBudgetParameters
RESPONSIVE_SEARCH_AD responsive_search_ad ResponsiveSearchAdParameters
MARGINAL_ROI_CAMPAIGN_BUDGET campaign_budget CampaignBudgetParameters
USE_BROAD_MATCH_KEYWORD use_broad_match_keyword UseBroadMatchKeywordRecommendation
RESPONSIVE_SEARCH_AD_ASSET responsive_search_ad_asset ResponsiveSearchAdAssetParameters

يوضّح مثال الرمز التالي كيفية تطبيق اقتراح باستخدام معلّمات التطبيق المقترَحة:

Java

private void runExample(
    GoogleAdsClient googleAdsClient, long customerId, String recommendationId) {
  String recommendationResourceName = ResourceNames.recommendation(customerId, recommendationId);

  ApplyRecommendationOperation.Builder operationBuilder =
      ApplyRecommendationOperation.newBuilder().setResourceName(recommendationResourceName);
  // Each recommendation types has optional parameters to override the recommended values.
  // This is an example to override a recommended ad when a TextAdRecommendation is applied.
  // Please read
  // https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation
  // for details.
  // Note that additional import statements are needed for this example to work. And also, please
  // replace INSERT_AD_ID_HERE with a valid ad ID below.
  //
  // Ad overrideAd = Ad.newBuilder().setId(Long.parseLong("INSERT_AD_ID_HERE")).build();
  // operationBuilder.setTextAd(TextAdParameters.newBuilder().
  //     setAd(overrideAd).build()).build();
  List<ApplyRecommendationOperation> operations = new ArrayList<>();
  operations.add(operationBuilder.build());

  try (RecommendationServiceClient recommendationServiceClient =
      googleAdsClient.getLatestVersion().createRecommendationServiceClient()) {
    ApplyRecommendationResponse response =
        recommendationServiceClient.applyRecommendation(Long.toString(customerId), operations);
    System.out.printf("Applied %d recommendation:%n", response.getResultsCount());
    for (ApplyRecommendationResult result : response.getResultsList()) {
      System.out.println(result.getResourceName());
    }
  }
}
      

#C

public void Run(GoogleAdsClient client, long customerId, long recommendationId)
{
    // Get the RecommendationServiceClient.
    RecommendationServiceClient service = client.GetService(
        Services.V11.RecommendationService);

    ApplyRecommendationOperation operation = new ApplyRecommendationOperation()
    {
        ResourceName = ResourceNames.Recommendation(customerId, recommendationId),

        // Each recommendation types has optional parameters to override the recommended
        // values. For example, you can override a recommended ad when a
        // TextAdRecommendation is applied, as shown below.
        // Please read https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation
        // for details.
        // TextAd = new TextAdParameters() {
        //   Ad = new Ad() {
        //     Id = long.Parse("INSERT_AD_ID_HERE")
        //   }
        // }
    };

    try
    {
        ApplyRecommendationResponse response = service.ApplyRecommendation(
            customerId.ToString(), new ApplyRecommendationOperation[] {
                operation
            });
        Console.WriteLine($"Applied {0} recommendation(s):", response.Results.Count);
        foreach (ApplyRecommendationResult result in response.Results)
        {
            Console.WriteLine($"- {result.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

public static function runExample(
    GoogleAdsClient $googleAdsClient,
    int $customerId,
    string $recommendationId
) {
    $recommendationResourceName =
        ResourceNames::forRecommendation($customerId, $recommendationId);

    $applyRecommendationOperation = new ApplyRecommendationOperation();
    $applyRecommendationOperation->setResourceName($recommendationResourceName);

    // 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.
    $recommendationServiceClient = $googleAdsClient->getRecommendationServiceClient();
    $response = $recommendationServiceClient->applyRecommendation(
        $customerId,
        [$applyRecommendationOperation]
    );
    /** @var Recommendation $appliedRecommendation */
    $appliedRecommendation = $response->getResults()[0];

    printf(
        "Applied recommendation with resource name: '%s'.%s",
        $appliedRecommendation->getResourceName(),
        PHP_EOL
    );
}
      

Python

def main(client, customer_id, recommendation_id):
    recommendation_service = client.get_service("RecommendationService")

    apply_recommendation_operation = client.get_type(
        "ApplyRecommendationOperation"
    )

    apply_recommendation_operation.resource_name = (
        recommendation_service.recommendation_path(
            customer_id, recommendation_id
        )
    )

    # This is where we override the recommended ad when a TextAdRecommendation is applied.
    # override_ad = client.get_type("Ad")
    # override_ad.resource_name = "INSERT_AD_ID_HERE"
    # apply_recommendation_operation.text_ad.ad = override_ad

    recommendation_response = recommendation_service.apply_recommendation(
        customer_id=customer_id, operations=[apply_recommendation_operation]
    )

    print(
        "Applied recommendation with resource name: "
        f"'{recommendation_response.results[0].resource_name}'"
    )
      

لغة Ruby

def apply_recommendation(customer_id, recommendation_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new

  recommendation_resource =
      client.path.recommendation(customer_id, recommendation_id)
  apply_recommendation_operation = client.operation.apply_recommendation
  apply_recommendation_operation.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.
  # For details, please read
  # https://developers.google.com/google-ads/api/reference/rpc/google.ads.google_ads.v1.services#google.ads.google_ads.v1.services.ApplyRecommendationOperation
  #
  # 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
  # apply_recommendation_operation.text_ad = text_ad_parameters

  # Issues a mutate request to apply the recommendation.
  recommendation_service = client.service.recommendation
  response = recommendation_service.apply_recommendation(
    customer_id: customer_id,
    operations: [apply_recommendation_operation],
  )
  applied_recommendation = response.results.first

  puts "Applied recommendation with resource name: '#{applied_recommendation.resource_name}'."
end
      

Perl

sub apply_recommendation {
  my ($api_client, $customer_id, $recommendation_id) = @_;

  my $recommendation_resource_name =
    Google::Ads::GoogleAds::V11::Utils::ResourceNames::recommendation(
    $customer_id, $recommendation_id);

  # Create an apply recommendation operation.
  my $apply_recommendation_operation =
    Google::Ads::GoogleAds::V11::Services::RecommendationService::ApplyRecommendationOperation
    ->new({
      resourceName => $recommendation_resource_name
    });

  # 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.
  #
  # my $overriding_ad = Google::Ads::GoogleAds::V11::Resources::Ad->new({
  #   id => "INSERT_AD_ID_AS_INTEGER_HERE"
  # });
  # my $text_ad_parameters =
  #   Google::Ads::GoogleAds::V11::Services::RecommendationService::TextAdParameters
  #   ->new({ad => $overriding_ad});
  # $apply_recommendation_operation->{textAd} = $text_ad_parameters;

  # Apply the recommendation.
  my $apply_recommendation_response =
    $api_client->RecommendationService()->apply({
      customerId => $customer_id,
      operations => [$apply_recommendation_operation]});

  printf "Applied recommendation with resource name: '%s'.\n",
    $apply_recommendation_response->{results}[0]{resourceName};

  return 1;
}
      

مشاهدة هذه الفيديوهات للحصول على مزيد من المعلومات

تطبيق المعلمات

مجمَّع

الأخطاء

الفحوصات

رفض التوصيات

الفيديو: نظرة متعمّقة

يمكنك رفض الاقتراحات باستخدام RecommendationService. تشبه بنية الرمز تطبيق الاقتراحات، ولكنك تستخدم بدلاً من ذلك DismissRecommendationOperation و RecommendationService.DismissRecommendation.

مشاهدة هذه الفيديوهات للحصول على مزيد من المعلومات

مجمَّع

الأخطاء

الفحوصات