فيديو: يمكنك الاطّلاع على حديث "مجموعات بيانات المنتجات" من ورشة العمل لعام 2019
تتيح مجموعات الإعلانات الفندقية تقسيم فنادقك إلى العديد من مجموعات بيانات المنتجات الفندقية، وذلك حسب عدّة سمات لتتمكّن من تعديل عروض الأسعار لكل مجموعة على حدة. لنأخذ في الاعتبار الشجرة أدناه، حيث تم تقسيم الفنادق على المستوى الأول بشكل عام إلى فنادق من فئة 5 نجوم وفنادق من فئة 4 نجوم وفئات فنادق أخرى. على المستوى الثاني، تم تقسيم الفنادق في فئات الفنادق الأخرى إلى فنادق "الولايات المتحدة" وفنادق "المملكة المتحدة" وفنادق في مناطق أخرى.

كل عقدة في الشجرة هي إما قسم فرعي أو وحدة، كما هو محدّد في
ListingGroupType.
يقدّم القسم الفرعي مستوى جديدًا في الشجرة، بينما الوحدات هي أوراق الشجرة. يجب دائمًا تقسيم كل قسم فرعي بشكل كامل، لذا يجب أن يحتوي على عقدة تمثّل أخرى. في المثال، تكون العقدتان الجذر وفئة الفندق: (أخرى) قسمَين فرعيَين. تتيح لك بنية الشجرة هذه التي تتضمّن أقسامًا فرعية ووحدات تحديد عروض الأسعار على مستوى الوحدة، وتضمن أيضًا أن يندرج كل بيان منتج فندقي ضمن عقدة وحدة واحدة فقط في الشجرة.
العُقد هي كائنات من فئة ListingGroupInfo،
التي تحتوي على الحقل ListingGroupType الذي
يشير إلى ما إذا كانت العُقد وحدة أو قسمًا فرعيًا. سيؤدي ضبط ListingGroupInfo على
listing_group من AdGroupCriterion إلى ربطه بـ
الـ AdGroup.
ضبط عروض أسعار "النسبة المئوية لتكلفة النقرة"
يُسمح لك بضبط percent_cpc_bid_micros من
AdGroupCriterion على عُقد الوحدات فقط. ستؤدي محاولة إجراء ذلك على عُقد الأقسام الفرعية إلى ظهور خطأ.
سمات بيانات المنتجات
تحتوي ListingGroupInfo أيضًا على
case_value وهو
a ListingDimensionInfo يحتوي على أحد
أنواع السمات المتعدّدة. يمثّل ListingGroupInfo القيم المرتبطة بفنادقك، مثل رقم تعريف الفندق أو بلد الفندق أو فئة الفندق. يتوفّر وصف كامل لـ
أنواع ListingDimensionInfoالمتاحة في المستندات
المرجعية.
يجب أن يحتوي كل عنصر ثانوي مباشر لقسم فرعي على case_value من النوع الفرعي نفسه لـ ListingDimensionInfo. لا تحتوي عقدة الجذر فقط على case_value.
تذكَّر أنّ كل قسم فرعي يجب أن يحتوي على case_value "فارغ" من النوع الصحيح، يمثّل "جميع القيم الأخرى".
لمزيد من التفاصيل، يمكنك الاطّلاع على مقتطف الرمز التالي الذي يضيف المستوى الأول من شجرة مجموعات بيانات المنتجات.
جافا
private static String addLevel1Nodes( long customerId, long adGroupId, String rootResourceName, List<AdGroupCriterionOperation> operations, long percentCpcBidMicroAmount) { // Creates hotel class info and dimension info for 5-star hotels. ListingDimensionInfo fiveStarredDimensionInfo = ListingDimensionInfo.newBuilder() .setHotelClass(HotelClassInfo.newBuilder().setValue(5).build()) .build(); // Creates listing group info for 5-star hotels as a UNIT node. ListingGroupInfo fiveStarredUnit = ListingGroupInfo.newBuilder() .setType(ListingGroupType.UNIT) .setParentAdGroupCriterion(rootResourceName) .setCaseValue(fiveStarredDimensionInfo) .build(); // Creates an ad group criterion for 5-star hotels. AdGroupCriterion fiveStarredAdGroupCriterion = createAdGroupCriterion(customerId, adGroupId, fiveStarredUnit, percentCpcBidMicroAmount); // Decrements the temp ID for the next ad group criterion. AdGroupCriterionOperation operation = generateCreateOperation(fiveStarredAdGroupCriterion); operations.add(operation); // You can also create more UNIT nodes for other hotel classes by copying the above code in // this method and modifying the value passed to HotelClassInfo() to the value you want. // For instance, passing 4 instead of 5 in the above code will create a UNIT node of 4-star // hotels instead. // Creates hotel class info and dimension info for other hotel classes by not specifying // any attributes on those object. ListingDimensionInfo otherHotelsDimensionInfo = ListingDimensionInfo.newBuilder() .setHotelClass(HotelClassInfo.newBuilder().build()) .build(); // Creates listing group info for other hotel classes as a SUBDIVISION node, which will be // used as a parent node for children nodes of the next level. ListingGroupInfo otherHotelsSubdivision = createListingGroupInfo( ListingGroupType.SUBDIVISION, rootResourceName, otherHotelsDimensionInfo); // Creates an ad group criterion for other hotel classes. AdGroupCriterion otherHotelsAdGroupCriterion = createAdGroupCriterion( customerId, adGroupId, otherHotelsSubdivision, percentCpcBidMicroAmount); operation = generateCreateOperation(otherHotelsAdGroupCriterion); operations.add(operation); return otherHotelsAdGroupCriterion.getResourceName(); }
#C
private string AddLevel1Nodes(long customerId, long adGroupId, string rootResourceName, List<AdGroupCriterionOperation> operations, long percentCpcBidMicroAmount) { // Create listing dimension info for 5-star class hotels. ListingDimensionInfo fiveStarredListingDimensionInfo = new ListingDimensionInfo { HotelClass = new HotelClassInfo { Value = 5 } }; // Create a listing group info for 5-star hotels as a UNIT node. ListingGroupInfo fiveStarredUnit = CreateListingGroupInfo(ListingGroupType.Unit, rootResourceName, fiveStarredListingDimensionInfo); // Create an ad group criterion for 5-star hotels. AdGroupCriterion fiveStarredAdGroupCriterion = CreateAdGroupCriterion(customerId, adGroupId, fiveStarredUnit, percentCpcBidMicroAmount); // Create an operation and add it to the list of operations. operations.Add(new AdGroupCriterionOperation { Create = fiveStarredAdGroupCriterion }); // Decrement the temp ID for the next ad group criterion. nextTempId--; // You can also create more UNIT nodes for other hotel classes by copying the above code // in this method and modifying the value passed to HotelClassInfo(). // For instance, passing 4 instead of 5 in the above code will instead create a UNIT // node of 4-star hotels. // Create hotel class info and dimension info for other hotel classes by *not* // specifying any attributes on those object. ListingDimensionInfo otherHotelsListingDimensionInfo = new ListingDimensionInfo { HotelClass = new HotelClassInfo() }; // Create listing group info for other hotel classes as a SUBDIVISION node, which will // be used as a parent node for children nodes of the next level. ListingGroupInfo otherHotelsSubdivisionListingGroupInfo = CreateListingGroupInfo (ListingGroupType.Subdivision, rootResourceName, otherHotelsListingDimensionInfo); // Create an ad group criterion for other hotel classes. AdGroupCriterion otherHotelsAdGroupCriterion = CreateAdGroupCriterion(customerId, adGroupId, otherHotelsSubdivisionListingGroupInfo, percentCpcBidMicroAmount); // Create an operation and add it to the list of operations. operations.Add(new AdGroupCriterionOperation { Create = otherHotelsAdGroupCriterion }); // Decrement the temp ID for the next ad group criterion. nextTempId--; return otherHotelsAdGroupCriterion.ResourceName; }
PHP
private static function addLevel1Nodes( int $customerId, int $adGroupId, string $rootResourceName, array &$operations, int $percentCpcBidMicroAmount ) { // Creates hotel class info and dimension info for 5-star hotels. $fiveStarredDimensionInfo = new ListingDimensionInfo([ 'hotel_class' => new HotelClassInfo(['value' => 5]) ]); // Creates listing group info for 5-star hotels as a UNIT node. $fiveStarredUnit = self::createListingGroupInfo( ListingGroupType::UNIT, $rootResourceName, $fiveStarredDimensionInfo ); // Creates an ad group criterion for 5-star hotels. $fiveStarredAdGroupCriterion = self::createAdGroupCriterion( $customerId, $adGroupId, $fiveStarredUnit, $percentCpcBidMicroAmount ); // Decrements the temp ID for the next ad group criterion. self::$nextTempId--; $operation = self::generateCreateOperation($fiveStarredAdGroupCriterion); $operations[] = $operation; // You can also create more UNIT nodes for other hotel classes by copying the above code in // this method and modifying the value passed to HotelClassInfo() to the value you want. // For instance, passing 4 instead of 5 in the above code will create a UNIT node of 4-star // hotels instead. // Creates hotel class info and dimension info for other hotel classes by *not* specifying // any attributes on those object. $othersHotelsDimensionInfo = new ListingDimensionInfo([ 'hotel_class' => new HotelClassInfo() ]); // Creates listing group info for other hotel classes as a SUBDIVISION node, which will be // used as a parent node for children nodes of the next level. $otherHotelsSubDivision = self::createListingGroupInfo( ListingGroupType::SUBDIVISION, $rootResourceName, $othersHotelsDimensionInfo ); // Creates an ad group criterion for other hotel classes. $otherHotelsAdGroupCriterion = self::createAdGroupCriterion( $customerId, $adGroupId, $otherHotelsSubDivision, $percentCpcBidMicroAmount ); $operation = self::generateCreateOperation($otherHotelsAdGroupCriterion); $operations[] = $operation; self::$nextTempId--; return $otherHotelsAdGroupCriterion->getResourceName(); }
Python
def add_level1_nodes( client: GoogleAdsClient, customer_id: str, ad_group_id: str, root_resource_name: str, operations: List[AdGroupCriterionOperation], percent_cpc_bid_micro_amount: int, ) -> str: """Creates child nodes on level 1, partitioned by the hotel class info. Args: client: The Google Ads API client. customer_id: The Google Ads customer ID. ad_group_id: The ad group ID to which the hotel listing group will be added. root_resource_name: The string resource name of the listing group's root node. operations: A list of AdGroupCriterionOperations. percent_cpc_bid_micro_amount: The CPC bid micro amount to be set on created ad group criteria. Returns: The string resource name of the "other hotel classes" node, which serves as the parent node for the next level of the listing tree. """ global next_temp_id # Create listing dimension info for 5-star class hotels. five_starred_listing_dimension_info: ListingDimensionInfo = client.get_type( "ListingDimensionInfo" ) five_starred_listing_dimension_info.hotel_class.value = 5 # Create a listing group info for 5-star hotels as a UNIT node. five_starred_unit: ListingGroupInfo = create_listing_group_info( client, client.enums.ListingGroupTypeEnum.UNIT, root_resource_name, five_starred_listing_dimension_info, ) # Create an ad group criterion for 5-star hotels. five_starred_ad_group_criterion: AdGroupCriterion = ( create_ad_group_criterion( client, customer_id, ad_group_id, five_starred_unit, percent_cpc_bid_micro_amount, ) ) # Create an operation and add it to the list of operations. five_starred_ad_group_criterion_operation: AdGroupCriterionOperation = ( client.get_type("AdGroupCriterionOperation") ) client.copy_from( five_starred_ad_group_criterion_operation.create, five_starred_ad_group_criterion, ) operations.append(five_starred_ad_group_criterion_operation) # Decrement the temp ID for the next ad group criterion. next_temp_id -= 1 # You can also create more UNIT nodes for other hotel classes by copying the # above code in this method and modifying the hotel class value. # For instance, passing 4 instead of 5 in the above code will instead create # a UNIT node of 4-star hotels. # Create hotel class info and dimension info without any specifying # attributes. This node will then represent hotel classes other than those # already covered by UNIT nodes at this level. other_hotels_listing_dimension_info: ListingDimensionInfo = client.get_type( "ListingDimensionInfo" ) # Set "hotel_class" as the oneof field on the ListingDimensionInfo object # without specifying the optional hotel_class field. client.copy_from( other_hotels_listing_dimension_info.hotel_class, client.get_type("HotelClassInfo"), ) # Create listing group info for other hotel classes as a SUBDIVISION node, # which will be used as a parent node for children nodes of the next level. other_hotels_subdivision_listing_group_info: ListingGroupInfo = ( create_listing_group_info( client, client.enums.ListingGroupTypeEnum.SUBDIVISION, root_resource_name, other_hotels_listing_dimension_info, ) ) # Create an ad group criterion for other hotel classes. other_hotels_ad_group_criterion: AdGroupCriterion = ( create_ad_group_criterion( client, customer_id, ad_group_id, other_hotels_subdivision_listing_group_info, percent_cpc_bid_micro_amount, ) ) # Create an operation and add it to the list of operations. other_hotels_ad_group_criterion_operation: AdGroupCriterionOperation = ( client.get_type("AdGroupCriterionOperation") ) client.copy_from( other_hotels_ad_group_criterion_operation.create, other_hotels_ad_group_criterion, ) operations.append(other_hotels_ad_group_criterion_operation) # Decrement the temp ID for the next ad group criterion. next_temp_id -= 1 return other_hotels_ad_group_criterion.resource_name
Ruby
def add_level1_nodes( client, customer_id, ad_group_id, root_resource_name, operations, percent_cpc_bid_micro_amount) # Creates hotel class info and dimension info for 5-star hotels. five_starred_dimension_info = client.resource.listing_dimension_info do |d| d.hotel_class = client.resource.hotel_class_info do |c| c.value = 5 end end # Creates listing group info for 5-star hotels as a UNIT node. five_starred_unit = create_listing_group_info( client, :UNIT, root_resource_name, five_starred_dimension_info, ) # Creates an ad group criterion for 5-star hotels. five_starred_ad_group_criterion = create_ad_group_criterion( client, customer_id, ad_group_id, five_starred_unit, percent_cpc_bid_micro_amount, ) operations << generate_create_operation( client, five_starred_ad_group_criterion, ) # You can also create more UNIT nodes for other hotel classes by copying the # above code in this method and modifying the value passed to HotelClassInfo() # to the value you want. # For instance, passing 4 instead of 5 in the above code will create a UNIT # node of 4-star hotels instead. # Creates hotel class info and dimension info for other hotel classes # by *not* specifying any attributes on those object. other_hotels_dimention_info = client.resource.listing_dimension_info do |d| d.hotel_class = client.resource.hotel_class_info end # Creates listing group info for other hotel classes as a SUBDIVISION node, # which will be used as a parent node for children nodes of the next level. other_hotels_subdivision = create_listing_group_info( client, :SUBDIVISION, root_resource_name, other_hotels_dimention_info, ) # Creates an ad group criterion for other hotel classes. other_hotels_ad_group_criterion = create_ad_group_criterion( client, customer_id, ad_group_id, other_hotels_subdivision, percent_cpc_bid_micro_amount, ) operations << generate_create_operation( client, other_hotels_ad_group_criterion, ) other_hotels_ad_group_criterion.resource_name end
Perl
sub add_level_1_nodes { my ($customer_id, $ad_group_id, $root_resource_name, $operations, $percent_cpc_bid_micro_amount) = @_; # Create hotel class info and dimension info for 5-star hotels. my $five_starred_dimension_info = Google::Ads::GoogleAds::V25::Common::ListingDimensionInfo->new({ hotelClass => Google::Ads::GoogleAds::V25::Common::HotelClassInfo->new({ value => 5 })}); # Create listing group info for 5-star hotels as a UNIT node. my $five_starred_unit = create_listing_group_info(UNIT, $root_resource_name, $five_starred_dimension_info); # Create an ad group criterion for 5-star hotels. my $five_starred_ad_group_criterion = create_ad_group_criterion($customer_id, $ad_group_id, $five_starred_unit, $percent_cpc_bid_micro_amount); my $operation = generate_create_operation($five_starred_ad_group_criterion); push @$operations, $operation; # You can also create more UNIT nodes for other hotel classes by copying the # above code in this method and modifying the value passed to HotelClassInfo # to the value you want. For instance, passing 4 instead of 5 in the above code # will create a UNIT node of 4-star hotels instead. # Create hotel class info and dimension info for other hotel classes by *not* # specifying any attributes on those object. my $others_hotels_dimension_info = Google::Ads::GoogleAds::V25::Common::ListingDimensionInfo->new({ hotelClass => Google::Ads::GoogleAds::V25::Common::HotelClassInfo->new()} ); # Create listing group info for other hotel classes as a SUBDIVISION node, which # will be used as a parent node for children nodes of the next level. my $other_hotels_subdivision = create_listing_group_info(SUBDIVISION, $root_resource_name, $others_hotels_dimension_info); # Create an ad group criterion for other hotel classes. my $other_hotels_ad_group_criterion = create_ad_group_criterion($customer_id, $ad_group_id, $other_hotels_subdivision, $percent_cpc_bid_micro_amount); $operation = generate_create_operation($other_hotels_ad_group_criterion); push @$operations, $operation; return $other_hotels_ad_group_criterion->{resourceName}; }
curl
السمات المتاحة لـ ListingDimensionInfo
تتوفّر أنواع ListingDimensionInfo التالية لـ "الإعلانات الفندقية":
أرقام التعريف المؤقتة
لا يتم تخصيص أرقام تعريف لمعايير المجموعة الإعلانية إلى أن يعالج الخادم طلب التعديل الذي ينشئها. ومع ذلك، يكون ListingGroupInfo غير صالح إلى أن يكتمل، لذا في كل مرة تنشئ فيها قسمًا فرعيًا، عليك أيضًا إنشاء عنصر ثانوي واحد على الأقل له في العملية نفسها.
للسماح لك بضبط parent_ad_group_criterion من
ListingGroupInfo للعُقد الثانوية، يمكنك استخدام
أرقام تعريف مؤقتة للمعايير. هذه المعرّفات فريدة محليًا (بدلاً من أن تكون فريدة عالميًا) ولا تنطبق إلا في سياق طلب تعديل واحد. يمكن استخدام أي
عدد صحيح سالب (مثل -1) كمعرّف مؤقت.
عند معالجة الطلب، يتم تخصيص رقم تعريف عالمي موجب لكل AdGroupCriterion
كالمعتاد.