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