ציון האופטימיזציה וההמלצות

סרטון: ניתוח מעמיק

אפשר לשפר את ההמלצות את הקמפיינים שלכם, בכמה דרכים:

  • הוספת תכונות חדשות ורלוונטיות
  • משפרים את הצעות המחיר, מילות המפתח והמודעות כדי לנצל את התקציב בצורה טובה יותר
  • שיפור היעילות והביצועים הכוללים של הקמפיינים

כדי להגדיל את ציוני האופטימיזציה, אפשר להשתמש RecommendationService לאחזור המלצות, ולאחר מכן ליישם או לדחות אותן בהתאם. מתחיל מגרסה 15 של Google Ads API, אפשר גם להירשם ליישום אוטומטי באמצעות 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 שאילתה.

סוגי המלצות

סוגי המלצות שיש בהם תמיכה מלאה

RecommendationType תיאור
CAMPAIGN_BUDGET תיקון קמפיינים שמוגבלים על-ידי התקציב
KEYWORD הוספה של מילות מפתח חדשות
TEXT_AD הוספת הצעות למודעה
TARGET_CPA_OPT_IN הגשת הצעת מחיר עם יעד עלות להמרה (CPA)
MAXIMIZE_CONVERSIONS_OPT_IN הגשה של הצעת מחיר עם מקסימום המרות
MAXIMIZE_CONVERSION_VALUE_OPT_IN הגשת הצעת מחיר עם 'מקסימום ערך המרות'
ENHANCED_CPC_OPT_IN אופטימיזציית עלות לקליק (eCPC)
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) כשהוא נמוך מדי ויש מעט מאוד המרות או ללא המרות
FORECASTING_SET_TARGET_ROAS הגדלת התקציב מראש לפני אירוע עונתי שצפויה להגדיל את נפח התנועה ולשנות את שיטת הבידינג ממקסימום ערך המרות ליעד החזר על הוצאות פרסום
LEAD_FORM הוספת נכסי השארת פרטים לקמפיין
CALLOUT_ASSET הוספה של נכסי יתרונות מרכזיים ברמת הקמפיין או הלקוח
SITELINK_ASSET הוספה של נכסי Sitelink ברמת הקמפיין או הלקוח
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 הגדרת יעד עלות להמרה (CPA) לקמפיינים שלא צוין בהם יעד עלות להמרה התקדמות באירוע עונתי שצפוי להגדיל את תנועת הגולשים
SET_TARGET_CPA יש להגדיר יעד עלות להמרה (CPA) לקמפיינים שלא צוין בהם יעד
SET_TARGET_ROAS צריך להגדיר יעד החזר על הוצאות פרסום לקמפיינים שלא צוין בהם יעד החזר
REFRESH_CUSTOMER_MATCH_LIST עדכון רשימת לקוחות שלא עודכנה ב-90 הימים האחרונים ימים
IMPROVE_GOOGLE_TAG_COVERAGE פריסה של Google Tag בדפים נוספים
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 (זמין החל מגרסה 16 של Google Ads API)

  • 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.V17.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());
}
      

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

מעבר ל-AdSense

אפשר ליישם או לסגור כל המלצה שאוחזרה.

ההמלצות עשויות להשתנות מדי יום בהתאם לסוג ההמלצה וגם כמה פעמים ביום. במקרה כזה, תקבלו המלצה הפונקציה resource_name של האובייקט יכולה מיושנות לאחר אחזור ההמלצה.

מומלץ ליישם את ההמלצות זמן קצר אחרי האחזור.

יישום ההמלצות

סרטון: יישום המלצות

אפשר ליישם המלצות פעילות או המלצות שנסגרו באמצעות: ApplyRecommendation ה-method של RecommendationService

סוגי ההמלצות יכולים לכלול פרמטרים נדרשים או אופציונליים. נפוצים ההמלצות מגיעות עם ערכים מומלצים שבהם המערכת משתמשת כברירת מחדל.

אם מגדירים יישום אוטומטי של המלצות, אי אפשר נתמכים בכל סוגי ההמלצות. אבל אפשר ליישם של סוגי ההמלצות שנתמכים באופן מלא על ידי Google Ads API. יש לעיין בקוד DetectAndApplyRecommendations לדוגמה כדי לקבל מידע נוסף.

משתמשים ב apply_parameters שדה האיחוד של ApplyRecommendationOperation ליישום המלצות עם ערכי פרמטרים ספציפיים. לכל סוג המלצה מתאים יש שדה נפרד. אי אפשר להשתמש באף סוג של המלצה שלא מופיע בשדה 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;
}
      

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

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::V17::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::V17::Resources::Ad->new({
  #   id => "INSERT_AD_ID_AS_INTEGER_HERE"
  # });
  # my $text_ad_parameters =
  #   Google::Ads::GoogleAds::V17::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::V17::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.V17.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
        );
    }
}
      

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 הקוד דומה ליישום של המלצות, אבל במקום זאת DismissRecommendationOperation וגם RecommendationService.DismissRecommendation.

אפשר למצוא מידע נוסף בסרטונים האלה

קבוצתי

שגיאות

בדיקות

יישום אוטומטי של המלצות

החל מגרסה 15 של Google Ads API, ניתן להשתמש 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_client_type עד GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION.

המלצות בתהליך יצירת הקמפיין

החל מגרסה 16 של Google Ads API, ניתן להשתמש RecommendationService.GenerateRecommendationsRequest כדי ליצור המלצות במהלך יצירת הקמפיין, לפי קבוצה נתונה של סוגי המלצות.

GenerateRecommendations מקבל כקלט מספר לקוח, ערוץ פרסום חייב להיות אחד או יותר 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, היא יכולה להיות כאות להוספת נכס Sitelink אחד לפחות לקמפיין.
  • 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, שהוא מספר נכסי ה-Sitelink שנמצאים בתהליך .

    • 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 – ולהציע אותם למשתמש על ידי הצגתם בקמפיין ממשק בנייה. אם המשתמש מקבל הצעה, ניתן לאחר מכן לשלב אותו בבקשה ליצירת הקמפיין ברגע שהמשתמש משלים את הפעולה. תהליך יצירת הקמפיין.