استثناءات البيانات هي أداة متقدّمة يمكن استخدامها لتوجيه عروض الأسعار الذكية لتجاهل جميع البيانات من التواريخ التي حدثت فيها مشاكل في تتبُّع الإحالات الناجحة في الحساب. لمزيد من التفاصيل حول طريقة عمل استثناءات البيانات، يُرجى الرجوع إلى الـ صفحة المساعدة الخاصة باستثناءات البيانات.
يمكنك إنشاء استثناءات البيانات أو تعديلها أو إزالتها آليًا باستخدام الـ
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:
جافا
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};