התאמות עונתיות הן כלי מתקדם שמאפשר לעדכן את שיטות הבידינג החכמות בהתאם לשינויים צפויים בשיעורי ההמרות, עקב אירועים עתידיים. למידע נוסף על התאמות עונתיות, אפשר לעיין בדף העזרה בנושא התאמות עונתיות.
יצירת התאמה עונתית באופן פרוגרמטי באמצעות BiddingSeasonalityAdjustments
.
היקף
BiddingSeasonalityAdjustments
כולל את השדה הנדרש scope
שאפשר להגדיר לו את הערכים הבאים. אפשרויות תצורה נוספות ספציפיות להיקף מוגדרות בהתאם להיקף שבו נעשה שימוש.
CAMPAIGN
– ההתאמה חלה על קמפיינים ספציפיים. מגדירים את השדהcampaigns
כרשימה של שמות המשאבים בקמפיין שעליהם תחול ההתאמה הזו.- המספר המקסימלי של קמפיינים לכל
BiddingSeasonalityAdjustment
הוא 2,000.
- המספר המקסימלי של קמפיינים לכל
CHANNEL
– ההתאמה חלה על קמפיינים ששייכים לסוגים ספציפיים של ערוצים. מגדירים את השדהadvertising_channel_types
לרשימה שלAdvertisingChannelTypes
שאליהם תחול ההתאמה הזו.
מכשירים
בנוסף להיקף שלהן, אפשר להגדיר התאמות עונתיות עם רשימה אופציונלית של סוגי מכשירים שאליהם ההתאמה תחול. אם ההגדרה devices
מוגדרת, ההתאמה עונתית תחול רק על תנועה ממכשירים מהסוגים שצוינו. אם לא מציינים סוג, כל סוגי המכשירים נכללים בהתאמה.
תאריכים, שעות וגורם השינוי של שיעור ההמרה
מלבד ההיקף והמכשירים האופציונליים, לכל התאמה עונתית יש את הערכים start_date_time
ו-end_date_time
וגם את הערך conversion_rate_modifier
.
התאריכים והשעות מגדירים את התקופה העתידית שבה ההתאמה תחול, והמַתְקן הוא המכפיל הצפוי של שיעור ההמרה שיחול. התאריכים והשעות מוצגים לפי אזור הזמן של החשבון.
דוגמה
בדוגמה הבאה מוסבר איך ליצור התאמה עונתית ברמת ההיקף CHANNEL
. בקטעים עם ההערות מוסבר איך לציין קמפיינים אם מגדירים היקף CAMPAIGN
.
Java
BiddingSeasonalityAdjustment seasonalityAdjustment = BiddingSeasonalityAdjustment.newBuilder() // A unique name is required for every seasonality adjustment. .setName("Seasonality adjustment #" + getPrintableDateTime()) // The CHANNEL scope applies the conversionRateModifier to all campaigns of specific // advertising channel types. In this example, the conversionRateModifier will only // apply to Search campaigns. Use the CAMPAIGN scope to instead limit the scope to // specific campaigns. .setScope(SeasonalityEventScope.CHANNEL) .addAdvertisingChannelTypes(AdvertisingChannelType.SEARCH) // If setting scope CAMPAIGN, add individual campaign resource name(s) according to // the commented out line below. // .addCampaigns("INSERT_CAMPAIGN_RESOURCE_NAME_HERE") .setStartDateTime(startDateTime) .setEndDateTime(endDateTime) // The conversionRateModifier is the expected future conversion rate change. When this // field is unset or set to 1.0, no adjustment will be applied to traffic. The allowed // range is 0.1 to 10.0. .setConversionRateModifier(conversionRateModifier) .build(); BiddingSeasonalityAdjustmentOperation operation = BiddingSeasonalityAdjustmentOperation.newBuilder() .setCreate(seasonalityAdjustment) .build(); MutateBiddingSeasonalityAdjustmentsResponse response = seasonalityAdjustmentServiceClient.mutateBiddingSeasonalityAdjustments( customerId.toString(), ImmutableList.of(operation)); System.out.printf( "Added seasonality adjustment with resource name: %s%n", response.getResults(0).getResourceName());
C#
BiddingSeasonalityAdjustment seasonalityAdjustment = new BiddingSeasonalityAdjustment() { // A unique name is required for every seasonality adjustment. Name = "Seasonality adjustment #" + ExampleUtilities.GetRandomString(), // The CHANNEL scope applies the conversionRateModifier to all campaigns of // specific advertising channel types. In this example, the // conversionRateModifier will only apply to Search campaigns. Use the // CAMPAIGN scope to instead limit the scope to specific campaigns. Scope = SeasonalityEventScope.Channel, AdvertisingChannelTypes = { AdvertisingChannelType.Search }, // If setting scope CAMPAIGN, add individual campaign resource name(s) // according to the commented out line below. // Campaigns = { "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" }, // The date range should be less than 14 days. StartDateTime = startDateTime, EndDateTime = endDateTime, // The conversionRateModifier is the expected future conversion rate change. // When this field is unset or set to 1.0, no adjustment will be applied to // traffic. The allowed range is 0.1 to 10.0. ConversionRateModifier = conversionRateModifier }; BiddingSeasonalityAdjustmentOperation operation = new BiddingSeasonalityAdjustmentOperation() { Create = seasonalityAdjustment }; try { MutateBiddingSeasonalityAdjustmentsResponse response = biddingSeasonalityAdjustmentService.MutateBiddingSeasonalityAdjustments( customerId.ToString(), new[] { operation }); Console.WriteLine($"Added seasonality adjustment with resource name: " + $"{response.Results[0].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
// Creates a bidding seasonality adjustment. $seasonalityAdjustment = new BiddingSeasonalityAdjustment([ // A unique name is required for every seasonality adjustment. 'name' => 'Seasonality adjustment #' . Helper::getPrintableDatetime(), // The CHANNEL scope applies the conversionRateModifier to all campaigns of specific // advertising channel types. In this example, the conversionRateModifier will only // apply to Search campaigns. Use the CAMPAIGN scope to instead limit the scope to // specific campaigns. 'scope' => SeasonalityEventScope::CHANNEL, 'advertising_channel_types' => [AdvertisingChannelType::SEARCH], // If setting scope CAMPAIGN, add individual campaign resource name(s) according to // the commented out line below. // 'campaigns' => ['INSERT_CAMPAIGN_RESOURCE_NAME_HERE'], 'start_date_time' => $startDateTime, 'end_date_time' => $endDateTime, // The conversionRateModifier is the expected future conversion rate change. When this // field is unset or set to 1.0, no adjustment will be applied to traffic. The allowed // range is 0.1 to 10.0. 'conversion_rate_modifier' => $conversionRateModifier ]); // Creates a bidding seasonality adjustment operation. $biddingSeasonalityAdjustmentOperation = new BiddingSeasonalityAdjustmentOperation(); $biddingSeasonalityAdjustmentOperation->setCreate($seasonalityAdjustment); // Submits the bidding seasonality adjustment operation to add the bidding seasonality // adjustment. $biddingSeasonalityAdjustmentServiceClient = $googleAdsClient->getBiddingSeasonalityAdjustmentServiceClient(); $response = $biddingSeasonalityAdjustmentServiceClient->mutateBiddingSeasonalityAdjustments( MutateBiddingSeasonalityAdjustmentsRequest::build( $customerId, [$biddingSeasonalityAdjustmentOperation] ) ); printf( "Added seasonality adjustment with resource name: '%s'.%s", $response->getResults()[0]->getResourceName(), PHP_EOL );
Python
bidding_seasonality_adjustment_service = client.get_service( "BiddingSeasonalityAdjustmentService" ) operation = client.get_type("BiddingSeasonalityAdjustmentOperation") bidding_seasonality_adjustment = operation.create # A unique name is required for every seasonality adjustment. bidding_seasonality_adjustment.name = f"Seasonality adjustment #{uuid4()}" # The CHANNEL scope applies the conversion_rate_modifier to all campaigns of # specific advertising channel types. In this example, the # conversion_rate_modifier will only apply to Search campaigns. Use the # CAMPAIGN scope to instead limit the scope to specific campaigns. bidding_seasonality_adjustment.scope = ( client.enums.SeasonalityEventScopeEnum.CHANNEL ) bidding_seasonality_adjustment.advertising_channel_types.append( client.enums.AdvertisingChannelTypeEnum.SEARCH ) # If setting scope CAMPAIGN, add individual campaign resource name(s) # according to the commented out line below. # # bidding_seasonality_adjustment.campaigns.append( # "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" # ) bidding_seasonality_adjustment.start_date_time = start_date_time bidding_seasonality_adjustment.end_date_time = end_date_time # The conversion_rate_modifier is the expected future conversion rate # change. When this field is unset or set to 1.0, no adjustment will be # applied to traffic. The allowed range is 0.1 to 10.0. bidding_seasonality_adjustment.conversion_rate_modifier = ( conversion_rate_modifier ) response = bidding_seasonality_adjustment_service.mutate_bidding_seasonality_adjustments( customer_id=customer_id, operations=[operation] ) resource_name = response.results[0].resource_name print(f"Added seasonality adjustment with resource name: '{resource_name}'")
Ruby
client = Google::Ads::GoogleAds::GoogleAdsClient.new operation = client.operation.create_resource.bidding_seasonality_adjustment do |bsa| # A unique name is required for every seasonality adjustment. bsa.name = "Seasonality Adjustment #{(Time.new.to_f * 1000).to_i}" # The CHANNEL scope applies the conversion_rate_modifier to all campaigns # of specific advertising channel types. In this example, the # conversion_rate_modifier will only apply to Search campaigns. Use the # CAMPAIGN scope to instead limit the scope to specific campaigns. bsa.scope = :CHANNEL bsa.advertising_channel_types << :SEARCH # If setting scope CAMPAIGN, add individual campaign resource name(s) # according to the commented out line below. # # bsa.campaigns << "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" bsa.start_date_time = start_date_time bsa.end_date_time = end_date_time # The conversion_rate_modifier is the expected future conversion rate # change. When this field is unset or set to 1.0, no adjustment will be # applied to traffic. The allowed range is 0.1 to 10.0. bsa.conversion_rate_modifier = conversion_rate_modifier end response = client.service.bidding_seasonality_adjustment.mutate_bidding_seasonality_adjustments( customer_id: customer_id, operations: [operation], ) puts "Added seasonality adjustment with resource name #{response.results.first.resource_name}"
Perl
my $seasonality_adjustment = Google::Ads::GoogleAds::V19::Resources::BiddingSeasonalityAdjustment->new({ # A unique name is required for every seasonality adjustment. name => "Seasonality adjustment #" . uniqid(), # The CHANNEL scope applies the conversion_rate_modifier to all campaigns # of specific advertising channel types. In this example, the conversion_rate_modifier # will only apply to Search campaigns. Use the CAMPAIGN scope to instead # limit the scope to specific campaigns. scope => CHANNEL, advertisingChannelTypes => [SEARCH], # If setting scope CAMPAIGN, add individual campaign resource name(s) # according to the commented out line below. # campaigns => ["INSERT_CAMPAIGN_RESOURCE_NAME_HERE"], startDateTime => $start_date_time, endDateTime => $end_date_time, # The conversion_rate_modifier is the expected future conversion rate change. # When this field is unset or set to 1.0, no adjustment will be applied to traffic. # The allowed range is 0.1 to 10.0. conversionRateModifier => $conversion_rate_modifier }); my $operation = Google::Ads::GoogleAds::V19::Services::BiddingSeasonalityAdjustmentService::BiddingSeasonalityAdjustmentOperation ->new({ create => $seasonality_adjustment }); my $response = $api_client->BiddingSeasonalityAdjustmentService()->mutate({ customerId => $customer_id, operations => [$operation]}); printf "Added seasonality adjustment with resource name: '%s'.\n", $response->{results}[0]{resourceName};