החרגות נתונים הן כלי מתקדם שמאפשר לכם להנחות את שיטות הבידינג החכמות להתעלם מכל הנתונים מתאריכים שבהם היו בעיות במעקב ההמרות בחשבון. מידע נוסף על אופן הפעולה של החרגות נתונים זמין בדף העזרה בנושא החרגות נתונים.
כדי ליצור, לעדכן או להסיר החרגות נתונים באופן פרוגרמטי, משתמשים במשאב BiddingDataExclusion וב-BiddingDataExclusionService.MutateBiddingDataExclusions עם BiddingDataExclusionOperation (create, update או remove. שימו לב שהשדה BiddingDataExclusion.status הוא לקריאה בלבד/OUTPUT_ONLY). אי אפשר ליצור BiddingDataExclusion בחשבון ניהול. צריך ליצור אותו בחשבון לקוח משלם ולקוח קצה עם היקף של CAMPAIGN או CHANNEL.
היקף
ל-BiddingDataExclusion יש scope חובה שאפשר להגדיר לו את הערכים הבאים. אפשרויות הגדרה נוספות שספציפיות להיקף נקבעות בהתאם להיקף שבו משתמשים.
CAMPAIGN: ההחרגה חלה על קמפיינים ספציפיים. מגדירים את השדהcampaignsלרשימה של שמות משאבים של קמפיינים שבהם ההחרגה הזו תחול.CHANNEL: ההחרגה חלה על קמפיינים ששייכים לסוגי ערוצים ספציפיים. מגדירים את השדהadvertising_channel_typesלרשימה של ערכיAdvertisingChannelTypeשההחרגה הזו תחול עליהם.
מכשירים
בנוסף להיקף, אפשר להגדיר החרגות נתונים עם רשימה אופציונלית של סוגי מכשירים שההחרגה תחול עליהם. אם מגדירים את devices, רק נתוני ההמרות מסוגי המכשירים שצוינו מוחרגים. אם לא מציינים סוג מכשיר, המערכת מחריגה את נתוני ההמרות מכל סוגי המכשירים.
תאריכים ושעות
בנוסף להיקף ולמכשירים האופציונליים, לכל החרגת נתונים צריך להיות תאריך ושעת התחלה ותאריך ושעת סיום בפורמט yyyy-MM-dd HH:mm:ss. החרגת נתונים היא פעולה שמתייחסת לעבר, וצריך להשתמש בה באירועים שיש להם start_date_time בעבר וend_date_time בעבר או בעתיד. השעות הן באזור הזמן של החשבון.
מגבלות
כשעובדים עם משאבי BiddingDataExclusion, חשוב לזכור את המגבלות הבאות:
- אפשר להחיל
BiddingDataExclusionאחת על עד 2,000 קמפיינים כשההיקף מוגדר כ-CAMPAIGN. - בכל חשבון לקוח, כולל חשבונות ניהול וחשבונות בדיקה, יכולות להיות בכל זמן נתון עד 500 החרגות נתונים פעילות. חריגה מהמגבלה הזו תגרום לשגיאה
RESOURCE_LIMIT.
דוגמה
בדוגמה הבאה אפשר לראות איך יוצרים החרגת נתונים עם היקף CHANNEL.
הקטעים שמסומנים כהערות מדגימים איך לציין קמפיינים אם הייתם מגדירים במקום זאת היקף של CAMPAIGN:
Java
BiddingDataExclusion DataExclusion = BiddingDataExclusion.newBuilder() // A unique name is required for every data exclusion. .setName("Data exclusion #" + getPrintableDateTime()) // The CHANNEL scope applies the data exclusion to all campaigns of specific // advertising channel types. In this example, the exclusion 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) .build(); BiddingDataExclusionOperation operation = BiddingDataExclusionOperation.newBuilder().setCreate(DataExclusion).build(); MutateBiddingDataExclusionsResponse response = DataExclusionServiceClient.mutateBiddingDataExclusions( customerId.toString(), ImmutableList.of(operation)); System.out.printf( "Added data exclusion with resource name: %s%n", response.getResults(0).getResourceName());
C#
BiddingDataExclusion dataExclusion = new BiddingDataExclusion() { // A unique name is required for every data exclusion. Name = "Data exclusion #" + ExampleUtilities.GetRandomString(), // The CHANNEL scope applies the data exclusion to all campaigns of specific // advertising channel types. In this example, the the exclusion will only apply to // Search campaigns. Use the CAMPAIGN scope to instead limit the scope to specific // campaigns. Scope = SeasonalityEventScope.Channel, AdvertisingChannelTypes = { AdvertisingChannelType.Search }, // The date range should be less than 14 days. StartDateTime = startDateTime, EndDateTime = endDateTime, }; BiddingDataExclusionOperation operation = new BiddingDataExclusionOperation() { Create = dataExclusion }; try { MutateBiddingDataExclusionsResponse response = biddingDataExclusionService.MutateBiddingDataExclusions( customerId.ToString(), new[] { operation }); Console.WriteLine($"Added data exclusion 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 data exclusion. $dataExclusion = new BiddingDataExclusion( [ // A unique name is required for every data exclusion. 'name' => 'Data exclusion #' . Helper::getPrintableDatetime(), // The CHANNEL scope applies the data exclusion to all campaigns of specific // advertising channel types. In this example, the exclusion 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 ] ); // Creates a bidding data exclusion operation. $biddingDataExclusionOperation = new BiddingDataExclusionOperation(); $biddingDataExclusionOperation->setCreate($dataExclusion); // Submits the bidding data exclusion operation to add the bidding data exclusion. $biddingDataExclusionServiceClient = $googleAdsClient->getBiddingDataExclusionServiceClient(); $response = $biddingDataExclusionServiceClient->mutateBiddingDataExclusions( MutateBiddingDataExclusionsRequest::build($customerId, [$biddingDataExclusionOperation]) ); printf( "Added bidding data exclusion with resource name: '%s'.%s", $response->getResults()[0]->getResourceName(), PHP_EOL );
Python
bidding_data_exclusion_service: BiddingDataExclusionServiceClient = ( client.get_service("BiddingDataExclusionService") ) operation: BiddingDataExclusionOperation = client.get_type( "BiddingDataExclusionOperation" ) bidding_data_exclusion: BiddingDataExclusion = operation.create # A unique name is required for every data exclusion bidding_data_exclusion.name = f"Data exclusion #{uuid4()}" # The CHANNEL scope applies the data exclusion to all campaigns of specific # advertising channel types. In this example, the exclusion will only # apply to Search campaigns. Use the CAMPAIGN scope to instead limit the # scope to specific campaigns. bidding_data_exclusion.scope = ( client.enums.SeasonalityEventScopeEnum.CHANNEL ) bidding_data_exclusion.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_data_exclusion.campaigns.append( # "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" # ) bidding_data_exclusion.start_date_time = start_date_time bidding_data_exclusion.end_date_time = end_date_time response: MutateBiddingDataExclusionsResponse = ( bidding_data_exclusion_service.mutate_bidding_data_exclusions( customer_id=customer_id, operations=[operation] ) ) resource_name: str = response.results[0].resource_name print(f"Added data exclusion with resource name: '{resource_name}'")
Ruby
client = Google::Ads::GoogleAds::GoogleAdsClient.new operation = client.operation.create_resource.bidding_data_exclusion do |bda| # A unique name is required for every data excluseion. bda.name = "Seasonality Adjustment #{(Time.new.to_f * 1000).to_i}" # The CHANNEL scope applies the data exclusion 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. bda.scope = :CHANNEL bda.advertising_channel_types << :SEARCH # If setting scope CAMPAIGN, add individual campaign resource name(s) # according to the commented out line below. # # bda.campaigns << "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" bda.start_date_time = start_date_time bda.end_date_time = end_date_time end response = client.service.bidding_data_exclusion.mutate_bidding_data_exclusions( customer_id: customer_id, operations: [operation], ) puts "Added data exclusion with resource name #{response.results.first.resource_name}."
Perl
my $data_exclusion = Google::Ads::GoogleAds::V26::Resources::BiddingDataExclusion->new({ # A unique name is required for every data exclusion. name => "Data exclusion #" . uniqid(), # The CHANNEL scope applies the data exclusion to all campaigns of specific # advertising channel types. In this example, the exclusion 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 }); my $operation = Google::Ads::GoogleAds::V26::Services::BiddingDataExclusionService::BiddingDataExclusionOperation ->new({ create => $data_exclusion }); my $response = $api_client->BiddingDataExclusionService()->mutate({ customerId => $customer_id, operations => [$operation]}); printf "Added data exclusion with resource name: '%s'.\n", $response->{results}[0]{resourceName};