ایجاد گروه های لیست هتل ها

ویدئوی : صحبت‌های گروه فهرست‌نویسی در کارگاه سال ۲۰۱۹ را ببینید

گروه‌های تبلیغاتی هتل از تقسیم‌بندی هتل‌های شما به گروه‌های فهرست هتل‌های متعدد، در ابعاد مختلف، پشتیبانی می‌کنند تا بتوانید پیشنهادات خود را برای هر گروه بر اساس آن تنظیم کنید. درخت زیر را در نظر بگیرید، که در سطح اول، هتل‌ها به طور کلی به هتل‌های ۵ ستاره، هتل‌های ۴ ستاره و سایر کلاس‌های هتل تقسیم شده‌اند. در سطح دوم، هتل‌های سایر کلاس‌های هتل به هتل‌های "ایالات متحده"، هتل‌های "بریتانیا" و هتل‌های مناطق دیگر تقسیم شده‌اند.

هر گره در درخت، همانطور که توسط ListingGroupType تعریف شده است، یا یک زیربخش است یا یک واحد. یک زیربخش، سطح جدیدی را در درخت معرفی می‌کند، در حالی که واحدها برگ‌های درخت هستند. هر زیربخش همیشه باید کاملاً پارتیشن‌بندی شود، بنابراین باید شامل یک گره باشد که نشان دهنده Other است. در مثال، گره‌های ریشه و Hotel Class: (Other) زیربخش هستند. این ساختار درختی با زیربخش‌ها و واحدها به شما امکان می‌دهد پیشنهادات را در سطح واحد تنظیم کنید و همچنین تضمین می‌کند که هر لیست هتل در یک و فقط یک گره واحد در درخت قرار می‌گیرد.

گره‌ها اشیاء کلاس ListingGroupInfo هستند که شامل فیلد ListingGroupType است که نشان می‌دهد گره‌ها واحد هستند یا زیربخش. تنظیم ListingGroupInfo روی listing_group از AdGroupCriterion آن را به AdGroup پیوند می‌دهد.

تنظیم درصد پیشنهادهای CPC

شما مجاز به تنظیم percent_cpc_bid_micros از AdGroupCriterion فقط روی گره‌های واحد هستید. تلاش برای انجام این کار روی گره‌های زیرمجموعه با خطا مواجه خواهد شد.

ابعاد لیست

یک ListingGroupInfo همچنین دارای یک case_value است که یک 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();
}
      

سی شارپ

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;
}
      

پی اچ پی

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();
}
      

پایتون

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
      

روبی

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
      

پرل

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::V22::Common::ListingDimensionInfo->new({
      hotelClass => Google::Ads::GoogleAds::V22::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::V22::Common::ListingDimensionInfo->new({
      hotelClass => Google::Ads::GoogleAds::V22::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};
}
      

ابعاد موجود برای ListingDimensionInfo

انواع ListingDimensionInfo زیر برای تبلیغات هتل موجود است:

کارت‌های شناسایی موقت

معیارهای گروه‌های تبلیغاتی تا زمانی که درخواست تغییر که آنها را ایجاد می‌کند توسط سرور پردازش نشود، شناسه‌ای به آنها اختصاص داده نمی‌شود. با این حال، ListingGroupInfo تا زمانی که کامل نشده باشد نامعتبر است، بنابراین هر زمان که یک زیرمجموعه ایجاد می‌کنید، باید حداقل یکی از زیرمجموعه‌های آن را نیز در همان عملیات ایجاد کنید.

برای اینکه بتوانید parent_ad_group_criterion مربوط به ListingGroupInfo را برای گره‌های فرزند تنظیم کنید، می‌توانید از شناسه‌های معیار موقت استفاده کنید. این شناسه‌ها به صورت محلی منحصر به فرد هستند (و نه به صورت جهانی منحصر به فرد) که فقط در چارچوب یک درخواست mutate اعمال می‌شوند. هر عدد صحیح منفی (به عنوان مثال، -1 ) می‌تواند به عنوان شناسه موقت استفاده شود.

وقتی درخواست پردازش می‌شود، طبق معمول به هر AdGroupCriterion یک شناسه سراسری مثبت اختصاص داده می‌شود.