تعديل عروض الأسعار باستخدام معدّلات عروض الأسعار

يمكنك استخدام Google Ads API لضبط تعديلات عروض الأسعار (المعروفة أيضًا باسم معدِّلات عروض الأسعار) لإعلانات الفنادق. لمعرفة تفاصيل عن طريقة عمل تعديلات عروض الأسعار، يُرجى الاطّلاع على مقالة لمحة عن تعديلات عروض الأسعار في "إعلانات الفنادق".

تعديلات عروض الأسعار على مستوى الحملة

لاستخدام Google Ads API من أجل ضبط تعديلات عروض الأسعار على مستوى الحملة، اطّلِع على مقالة إدارة تعديلات عروض الأسعار.

تعديلات عروض الأسعار على مستوى المجموعة الإعلانية

اعتبارًا من الإصدار 26، تتم إعادة تسمية المعايير الخمسة الخاصة بالفنادق في AdGroupBidModifier إلى أسماء غير مرتبطة بمجال معيّن (مثل يوم بدء الأسبوع ومدة الحجز)، لتحلّ محلّ المعايير الخاصة بالفنادق من الإصدارات السابقة. ستبقى تعديلات عروض الأسعار هذه متاحة فقط لإعلانات الفنادق، سواء في "حملات الفنادق" أو "الحملات على شبكة البحث للسفر". يتم نقل تعديلات عروض الأسعار الحالية التي تم إنشاؤها في الإصدار 25 أو الإصدارات الأقدم تلقائيًا باستخدام أرقام تعريف المعايير وأسماء الموارد نفسها. للاطّلاع على ملخّص لجميع التغييرات التي قد تؤدي إلى عطل في الإصدار 26، يُرجى مراجعة ملاحظات الإصدار.

لضبط تعديلات عروض الأسعار على مستوى المجموعة الإعلانية، أنشئ عنصر معيار للسمة التي تريد استهدافها واضبط حقولها على القيم المناسبة. في الإصدار 26 والإصدارات الأحدث، استخدِم عناصر المعايير غير المرتبطة بمجال معيّن: AdvanceBookingWindowInfo أو UserSetDatesInfo أو StartDayOfWeekInfo أو LengthOfBookingInfo أو StartDateRangeInfo. في الإصدار 25 والإصدارات الأقدم، استخدِم عناصر المعايير الخاصة بالفنادق: HotelAdvanceBookingWindowInfo أو HotelDateSelectionTypeInfo أو HotelCheckInDayInfo أو HotelLengthOfStayInfo أو HotelCheckInDateRangeInfo.

يلخّص الجدول التالي حقول معايير AdGroupBidModifier وأنواع الرسائل والحقول الفرعية ونطاقات bid_modifier الصالحة في جميع إصدارات واجهة برمجة التطبيقات:

الإصدار 25 والإصدارات الأقدم الإصدار 26 والإصدارات الأحدث الحقول الفرعية والأنواع الوصف والنطاق الصالح
hotel_date_selection_type (HotelDateSelectionTypeInfo) user_set_dates (UserSetDatesInfo) type: DateSelectionType في الإصدار 26 (HotelDateSelectionType في الإصدار 25). القيم: DEFAULT_SELECTION (رقم تعريف المعيار 50)، USER_SELECTED (رقم تعريف المعيار 51). IMMUTABLE. التواريخ التلقائية مقابل التواريخ التي يختارها المستخدم نطاق bid_modifier الصالح: من 0.5 إلى 2.0 (لا يتيح خيار رفض 0).
hotel_advance_booking_window (HotelAdvanceBookingWindowInfo) advance_booking_window (AdvanceBookingWindowInfo) ‫min_days، max_days (int64، 0–330). IMMUTABLE، مطلوب. عدد الأيام قبل تاريخ بدء الحجز النطاق الصالح لـ "bid_modifier": من 0.1 إلى 10.0، أو 0 لإيقاف الميزة.
hotel_length_of_stay (HotelLengthOfStayInfo) length_of_booking (LengthOfBookingInfo) ‫min_days، max_days في الإصدار 26 (min_nights، max_nights في الإصدار 25) (int64، 1–30). IMMUTABLE، مطلوب. مدة الحجز النطاق الصالح لـ "bid_modifier": من 0.1 إلى 10.0، أو 0 لإيقاف الميزة.
hotel_check_in_day (HotelCheckInDayInfo) start_day_of_week (StartDayOfWeekInfo) ‫day_of_week (DayOfWeek، أرقام تعريف المعايير 60–66 لـ MONDAY–SUNDAY). IMMUTABLE. يوم الأسبوع لتاريخ بدء الحجز النطاق الصالح لـ "bid_modifier": من 0.1 إلى 10.0، أو 0 لإيقاف الميزة.
hotel_check_in_date_range (HotelCheckInDateRangeInfo) start_date_range (StartDateRangeInfo) ‫start_date، end_date (string، YYYY-MM-DD). IMMUTABLE، مطلوب. النطاق الزمني لتاريخ بدء الحجز النطاق الصالح لـ "bid_modifier": من 0.1 إلى 10.0، أو 0 لإيقاف الميزة.

على سبيل المثال، لإنشاء تعديل عروض أسعار المجموعة الإعلانية باستخدام فترة الحجز المُسبق بين 30 و60 يومًا في الإصدار 26 والإصدارات الأحدث، أنشئ عنصر AdvanceBookingWindowInfo (أو HotelAdvanceBookingWindowInfo في الإصدار 25 والإصدارات الأقدم) واضبط min_days على 30 وmax_days على 60.

اربط عنصر المعيار بعنصر AdGroupBidModifier باستخدام حقل المعيار المقابل (advance_booking_window أو user_set_dates أو start_day_of_week أو length_of_booking أو start_date_range)، وحدِّد اسم المورد للمجموعة الإعلانية المستهدفة باستخدام ad_group، واضبط حقل bid_modifier على مُضاعِف:

  • ‫advance_booking_window وlength_of_booking وstart_day_of_week وstart_date_range وdevice: يمكنك تحديد مُضاعِف من 0.1 إلى 10.0 (على سبيل المثال، 1.5 لتعديل بنسبة ‎+50% أو 0.5 لتعديل بنسبة ‎-50%)، أو ضبط bid_modifier على 0 (0.0) لإيقاف (-100%) المعيار.
  • user_set_dates: حدِّد مُضاعِفًا من 0.5 إلى 2.0. لا يمكن ضبط "bid_modifier" على "0" في "user_set_dates"، وسيتم عرض "RangeError.TOO_LOW".

لمزيد من التفاصيل حول آلية عمل كل نوع من أنواع التعديلات، يُرجى الاطّلاع على مقالة لمحة عن تعديلات عروض الأسعار في "إعلانات الفنادق".

تنطبق أيضًا تفاصيل حدود الموارد وقسم إعداد التقارير التالية في الإصدار 26:

  • segments.user_set_dates: في الإصدار 26 والإصدارات الأحدث، يكون نوع التعداد لـ segments.user_set_dates هو DateSelectionType (تم تعديله من HotelDateSelectionType في الإصدار 25 والإصدارات الأقدم، وتستمر تقارير حملات الفنادق التي تستخدم segments.hotel_date_selection_type في استخدام HotelDateSelectionType). لم تتغير شرائح برنامج الرحلة الأخرى (segments.advance_booking_window وsegments.length_of_booking وsegments.start_date وsegments.start_day_of_week).
  • حدود الموارد: يحتفظ كلّ من ResourceLimitType.HOTEL_ADVANCE_BOOKING_WINDOW_BID_MODIFIERS_PER_AD_GROUP وResourceLimitType.HOTEL_CHECK_IN_DATE_RANGE_BID_MODIFIERS_PER_AD_GROUP باسمَيهما الحاليَين في الإصدار 26.

جافا

private void runExample(GoogleAdsClient googleAdsClient, long customerId, long adGroupId) {
  List<AdGroupBidModifierOperation> operations = new ArrayList<>();

  // Constructs the ad group resource name to use for each bid modifier.
  String adGroupResourceName = ResourceNames.adGroup(customerId, adGroupId);

  // 1) Creates an ad group bid modifier based on the hotel check-in day.
  AdGroupBidModifier checkInDayAdGroupBidModifier =
      AdGroupBidModifier.newBuilder()
          // Sets the resource name to the ad group resource name joined with the criterion ID
          // whose value corresponds to the desired check-in day.
          .setAdGroup(adGroupResourceName)
          .setStartDayOfWeek(StartDayOfWeekInfo.newBuilder().setDayOfWeek(DayOfWeek.MONDAY))
          // Sets the bid modifier value to 150%.
          .setBidModifier(1.5d)
          .build();
  operations.add(
      AdGroupBidModifierOperation.newBuilder().setCreate(checkInDayAdGroupBidModifier).build());

  // 2) Creates an ad group bid modifier based on the hotel length of stay.
  AdGroupBidModifier lengthOfStayAdGroupBidModifier =
      AdGroupBidModifier.newBuilder()
          // Sets the ad group.
          .setAdGroup(adGroupResourceName)
          // Creates the length of booking info.
          .setLengthOfBooking(
              LengthOfBookingInfo.newBuilder().setMinDays(3L).setMaxDays(7L).build())
          // Sets the bid modifier value to 170%.
          .setBidModifier(1.7d)
          .build();
  operations.add(
      AdGroupBidModifierOperation.newBuilder().setCreate(lengthOfStayAdGroupBidModifier).build());

  // Issues a mutate request to add the ad group bid modifiers.
  try (AdGroupBidModifierServiceClient adGroupBidModifierServiceClient =
      googleAdsClient.getLatestVersion().createAdGroupBidModifierServiceClient()) {
    MutateAdGroupBidModifiersResponse response =
        adGroupBidModifierServiceClient.mutateAdGroupBidModifiers(
            Long.toString(customerId), operations);

    // Prints the resource names of the added ad group bid modifiers.
    System.out.printf("Added %d hotel ad group bid modifiers:%n", response.getResultsCount());
    for (MutateAdGroupBidModifierResult mutateAdGroupBidModifierResult :
        response.getResultsList()) {
      System.out.printf("  %s%n", mutateAdGroupBidModifierResult.getResourceName());
    }
  }
}
      

#C

public void Run(GoogleAdsClient client, long customerId, long adGroupId)
{
    // Get the AdGroupBidModifierService.
    AdGroupBidModifierServiceClient service = client.GetService(
        Services.V26.AdGroupBidModifierService);

    // Constructs the ad group resource name to use for each bid modifier.
    string adGroupResourceName = ResourceNames.AdGroup(customerId, adGroupId);

    // 1) Create an ad group bid modifier based on the hotel check-in day.
    AdGroupBidModifier checkInDayAdGroupBidModifier = new AdGroupBidModifier()
    {
        // Sets the resource name to the ad group resource name joined with the criterion
        // ID whose value corresponds to the desired check-in day.
        AdGroup = adGroupResourceName,
        StartDayOfWeek = new StartDayOfWeekInfo()
        {
            DayOfWeek = DayOfWeek.Monday
        },

        // Set the bid modifier value to 150%.
        BidModifier = 1.5,
    };

    // Creates an ad group bid modifier operation.
    var checkInDayAdGroupBidModifierOperation = new AdGroupBidModifierOperation()
    {
        Create = checkInDayAdGroupBidModifier
    };

    // 2) Create an ad group bid modifier based on the hotel length of stay.
    AdGroupBidModifier lengthOfStayAdGroupBidModifier = new AdGroupBidModifier()
    {
        // Set the ad group.
        AdGroup = ResourceNames.AdGroup(customerId, adGroupId),

        // Set the length of booking info.
        LengthOfBooking = new LengthOfBookingInfo()
        {
            MinDays = 3,
            MaxDays = 7
        },

        // Set the bid modifier value to 170%.
        BidModifier = 1.7
    };

    // Create an ad group bid modifier operation.
    var lengthOfStayAdGroupBidModifierOperation = new AdGroupBidModifierOperation()
    {
        Create = lengthOfStayAdGroupBidModifier
    };

    try
    {
        // Issue a mutate request to add an ad group bid modifiers.
        MutateAdGroupBidModifiersResponse response = service.MutateAdGroupBidModifiers(
            customerId.ToString(),
            new AdGroupBidModifierOperation[] {
      checkInDayAdGroupBidModifierOperation,
      lengthOfStayAdGroupBidModifierOperation
            }
        );

        // Display the resource names of the added ad group bid modifiers.
        Console.WriteLine($"Added {response.Results.Count} hotel ad group bid modifiers:");

        foreach (MutateAdGroupBidModifierResult result in response.Results)
        {
            Console.WriteLine($"- {result.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

    public static function runExample(
        GoogleAdsClient $googleAdsClient,
        int $customerId,
        int $adGroupId
    ) {
        $operations = [];

        // 1) Creates an ad group bid modifier based on the hotel check-in day.
        $checkInDayAdGroupBidModifier = new AdGroupBidModifier(
            [
            // Sets the ad group.
            'ad_group' => ResourceNames::forAdGroup($customerId, $adGroupId),
            'hotel_check_in_day' => new HotelCheckInDayInfo(
                [
                'day_of_week' => DayOfWeek::MONDAY
                ]
            ),
            // Sets the bid modifier value to 150%.
            'bid_modifier' => 1.5
            ]
        );

        // Creates an ad group bid modifier operation.
        $checkInDayAdGroupBidModifierOperation = new AdGroupBidModifierOperation();
        $checkInDayAdGroupBidModifierOperation->setCreate($checkInDayAdGroupBidModifier);
        $operations[] = $checkInDayAdGroupBidModifierOperation;

        // 2) Creates an ad group bid modifier based on the hotel length of stay.
        $lengthOfStayAdGroupBidModifier = new AdGroupBidModifier(
            [
            // Sets the ad group.
            'ad_group' => ResourceNames::forAdGroup($customerId, $adGroupId),
            // Creates the hotel length of stay info.
            'hotel_length_of_stay' => new HotelLengthOfStayInfo(
                [
                'min_nights' => 3,
                'max_nights' => 7,
                ]
            ),
            // Sets the bid modifier value to 170%.
            'bid_modifier' => 1.7
            ]
        );

        // Creates an ad group bid modifier operation.
        $lengthOfStayAdGroupBidModifierOperation = new AdGroupBidModifierOperation();
        $lengthOfStayAdGroupBidModifierOperation->setCreate(
            $lengthOfStayAdGroupBidModifier
        );
        $operations[] = $lengthOfStayAdGroupBidModifierOperation;

        // Issues a mutate request to add an ad group bid modifiers.
        $adGroupBidModifierServiceClient = $googleAdsClient->getAdGroupBidModifierServiceClient();
        $response = $adGroupBidModifierServiceClient->mutateAdGroupBidModifiers(
            MutateAdGroupBidModifiersRequest::build($customerId, $operations)
        );

        // Print out resource names of the added ad group bid modifiers.
        printf(
            "Added %d hotel ad group bid modifiers:%s",
            $response->getResults()->count(),
            PHP_EOL
        );
        foreach ($response->getResults() as $addedAdGroupBidModifier) {
            /**
 * @var AdGroupBidModifier $addedAdGroupBidModifier
*/
            print $addedAdGroupBidModifier->getResourceName() . PHP_EOL;
        }
    }
      

Python

def main(client: GoogleAdsClient, customer_id: str, ad_group_id: str) -> None:
    ad_group_service: AdGroupServiceClient = client.get_service(
        "AdGroupService"
    )
    ag_bm_service: AdGroupBidModifierServiceClient = client.get_service(
        "AdGroupBidModifierService"
    )

    # Create ad group bid modifier based on hotel check-in day.
    check_in_ag_bm_operation: AdGroupBidModifierOperation = client.get_type(
        "AdGroupBidModifierOperation"
    )
    check_in_ag_bid_modifier: AdGroupBidModifier = (
        check_in_ag_bm_operation.create
    )
    check_in_ag_bid_modifier.hotel_check_in_day.day_of_week = (
        client.enums.DayOfWeekEnum.MONDAY
    )
    check_in_ag_bid_modifier.ad_group = ad_group_service.ad_group_path(
        customer_id, ad_group_id
    )
    # Sets the bid modifier value to 150%.
    check_in_ag_bid_modifier.bid_modifier = 1.5

    # Create ad group bid modifier based on hotel length of stay info.
    los_ag_bm_operation: AdGroupBidModifierOperation = client.get_type(
        "AdGroupBidModifierOperation"
    )
    los_ag_bid_modifier: AdGroupBidModifier = los_ag_bm_operation.create
    los_ag_bid_modifier.ad_group = ad_group_service.ad_group_path(
        customer_id, ad_group_id
    )
    # Creates the hotel length of stay info.
    hotel_length_of_stay_info: HotelLengthOfStayInfo = (
        los_ag_bid_modifier.hotel_length_of_stay
    )
    hotel_length_of_stay_info.min_nights = 3
    hotel_length_of_stay_info.max_nights = 7
    # Sets the bid modifier value to 170%.
    los_ag_bid_modifier.bid_modifier = 1.7

    # Add the bid modifiers
    ag_bm_response: MutateAdGroupBidModifiersResponse = (
        ag_bm_service.mutate_ad_group_bid_modifiers(
            customer_id=customer_id,
            operations=[check_in_ag_bm_operation, los_ag_bm_operation],
        )
    )

    # Print out resource names of the added ad group bid modifiers.
    print(f"Added {len(ag_bm_response.results)} hotel ad group bid modifiers:")

    result: MutateAdGroupBidModifierResult
    for result in ag_bm_response.results:
        print(result.resource_name)
      

Ruby

def add_hotel_ad_group_bid_modifiers(customer_id, ad_group_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new
  operations = []
  ad_group_resource = client.path.ad_group(customer_id, ad_group_id)

  # 1) Creates an ad group bid modifier based on the check-in day.
  operations << client.operation.create_resource.ad_group_bid_modifier do |bm|
    # Sets the ad group.
    bm.ad_group = ad_group_resource

    # Sets the check-in day to Monday.
    bm.start_day_of_week = client.resource.start_day_of_week_info do |info|
      info.day_of_week = :MONDAY
    end

    # Sets the bid modifier value to 150%.
    bm.bid_modifier = 1.5
  end

  # 2) Creates an ad group bid modifier based on the length of booking.
  operations << client.operation.create_resource.ad_group_bid_modifier do |bm|
    # Sets the ad group.
    bm.ad_group = ad_group_resource

    # Creates the length of booking info.
    bm.length_of_booking = client.resource.length_of_booking_info do |info|
      info.min_days = 3
      info.max_days = 7
    end

    # Sets the bid modifier value to 170%.
    bm.bid_modifier = 1.7
  end

  # 3) Issues a mutate request to add an ad group bid modifiers.
  ad_group_bid_modifier_service = client.service.ad_group_bid_modifier
  response = ad_group_bid_modifier_service.mutate_ad_group_bid_modifiers(
    customer_id: customer_id,
    operations: operations,
  )

  # Print out resource names of the added ad group bid modifiers.
  puts "Added #{response.results.size} hotel ad group bid modifiers:"
  response.results.each do |added_ad_group_bid_modifier|
    puts "\t#{added_ad_group_bid_modifier.resource_name}"
  end
end
      

Perl

sub add_hotel_ad_group_bid_modifiers {
  my ($api_client, $customer_id, $ad_group_id) = @_;

  # 1) Create an ad group bid modifier based on the hotel check-in day.
  my $check_in_day_ad_group_bid_modifier =
    Google::Ads::GoogleAds::V26::Resources::AdGroupBidModifier->new({
      # Set the ad group.
      adGroup => Google::Ads::GoogleAds::V26::Utils::ResourceNames::ad_group(
        $customer_id, $ad_group_id
      ),
      hotelCheckInDay =>
        Google::Ads::GoogleAds::V26::Common::HotelCheckInDayInfo->new({
          dayOfWeek => MONDAY
        }
        ),
      # Set the bid modifier value to 150%.
      bidModifier => 1.5
    });

  # Create an ad group bid modifier operation.
  my $check_in_day_ad_group_bid_modifier_operation =
    Google::Ads::GoogleAds::V26::Services::AdGroupBidModifierService::AdGroupBidModifierOperation
    ->new({
      create => $check_in_day_ad_group_bid_modifier
    });

  # 2) Create an ad group bid modifier based on the hotel length of stay.
  my $length_of_stay_ad_group_bid_modifier =
    Google::Ads::GoogleAds::V26::Resources::AdGroupBidModifier->new({
      # Set the ad group.
      adGroup => Google::Ads::GoogleAds::V26::Utils::ResourceNames::ad_group(
        $customer_id, $ad_group_id
      ),
      # Create the hotel length of stay info.
      hotelLengthOfStay =>
        Google::Ads::GoogleAds::V26::Common::HotelLengthOfStayInfo->new({
          minNights => 3,
          maxNights => 7
        }
        ),
      # Set the bid modifier value to 170%.
      bidModifier => 1.7
    });

  # Create an ad group bid modifier operation.
  my $length_of_stay_ad_group_bid_modifier_operation =
    Google::Ads::GoogleAds::V26::Services::AdGroupBidModifierService::AdGroupBidModifierOperation
    ->new({
      create => $length_of_stay_ad_group_bid_modifier
    });

  # 3) Add the ad group bid modifiers.
  my $ad_group_bid_modifiers_response =
    $api_client->AdGroupBidModifierService()->mutate({
      customerId => $customer_id,
      operations => [
        $check_in_day_ad_group_bid_modifier_operation,
        $length_of_stay_ad_group_bid_modifier_operation
      ]});

  # Print out resource names of the added ad group bid modifiers.
  my $ad_group_bid_modifier_results =
    $ad_group_bid_modifiers_response->{results};
  printf "Added %d hotel ad group bid modifiers:\n",
    scalar @$ad_group_bid_modifier_results;

  foreach my $ad_group_bid_modifier_result (@$ad_group_bid_modifier_results) {
    printf "\t%s\n", $ad_group_bid_modifier_result->{resourceName};
  }

  return 1;
}
      

curl

أمثلة

توضّح الأمثلة التالية كيفية الاستعلام عن تعديلات عروض أسعار المجموعات الإعلانية وإنشائها وتعديلها وإزالتها باستخدام حمولات GAQL وREST JSON.

قراءة تعديلات عروض الأسعار باستخدام GAQL

توضّح طلبات البحث التالية كيفية استرداد تعديلات عروض الأسعار حسب مدة الحجز في الإصدار 25 والإصدارات الأقدم مقارنةً بالإصدار 26 والإصدارات الأحدث:

الإصدار 25 والإصدارات الأقدم:

SELECT
  ad_group_bid_modifier.resource_name,
  ad_group_bid_modifier.bid_modifier,
  ad_group_bid_modifier.hotel_length_of_stay.min_nights,
  ad_group_bid_modifier.hotel_length_of_stay.max_nights
FROM ad_group_bid_modifier
WHERE ad_group_bid_modifier.hotel_length_of_stay.min_nights = 5

الإصدار 26 والإصدارات الأحدث:

SELECT
  ad_group_bid_modifier.resource_name,
  ad_group_bid_modifier.bid_modifier,
  ad_group_bid_modifier.length_of_booking.min_days,
  ad_group_bid_modifier.length_of_booking.max_days
FROM ad_group_bid_modifier
WHERE ad_group_bid_modifier.length_of_booking.min_days = 5

إنشاء تعديلات عروض الأسعار (حمولة JSON)

توضّح حمولات JSON التالية كيفية إنشاء تعديلات عروض أسعار المجموعات الإعلانية في الإصدار 26 والإصدارات الأحدث.

إنشاء تعديل عرض أسعار لمدة الحجز في الإصدار 26:

{
  "customerId": "1234567890",
  "operations": [
    {
      "create": {
        "adGroup": "customers/1234567890/adGroups/987654321",
        "bidModifier": 1.2,
        "lengthOfBooking": {
          "minDays": "3",
          "maxDays": "5"
        }
      }
    }
  ]
}

في الإصدار 25 والإصدارات الأقدم، كان يتم استخدام hotelLengthOfStay مع minNights وmaxNights.

إنشاء تعديل عروض أسعار لنطاق تاريخ البدء في الإصدار 26:

{
  "customerId": "1234567890",
  "operations": [
    {
      "create": {
        "adGroup": "customers/1234567890/adGroups/987654321",
        "bidModifier": 1.5,
        "startDateRange": {
          "startDate": "2026-12-20",
          "endDate": "2026-12-31"
        }
      }
    }
  ]
}

إنشاء تعديل عروض أسعار للتواريخ التي يحدّدها المستخدم في الإصدار 26:

{
  "customerId": "1234567890",
  "operations": [
    {
      "create": {
        "adGroup": "customers/1234567890/adGroups/987654321",
        "bidModifier": 1.3,
        "userSetDates": {
          "type": "USER_SELECTED"
        }
      }
    }
  ]
}

تعديل وإزالة تعديلات عروض الأسعار

يمكنك تعديل المضاعِف في تعديل عرض أسعار حالي أو إزالة تعديل عرض الأسعار بالكامل:

  • التعديل: حقول المعايير هي IMMUTABLE. لتعديل مضاعِف عرض السعر، أرسِل عملية update مع ضبط updateMask (update_mask في protobuf) على "bidModifier" ("bid_modifier") وضبط bidModifier (bid_modifier) على قيمة صالحة (من 0.1 إلى 10.0 أو 0 لإيقاف advance_booking_window وlength_of_booking وstart_day_of_week وstart_date_range وdevice، ومن 0.5 إلى 2.0 لـ user_set_dates). لتغيير معايير الاستهداف، أزِل تعديل عرض السعر وأنشئ تعديلاً جديدًا.
  • الإزالة: أرسِل عملية remove مع اسم المورد:
{
  "customerId": "1234567890",
  "operations": [
    {
      "remove": "customers/1234567890/adGroupBidModifiers/987654321~555444333"
    }
  ]
}

قواعد التحقّق من الصحة ومعالجة الأخطاء

تبقى قواعد التحقّق من الصحة كما هي في جميع الإصدارات، ولكن تتم إعادة تسمية ست قيم تعداد CriterionError في الإصدار 26 كما هو موضّح في الجدول التالي:

السيناريو الإصدار 25 والإصدارات الأقدم الإصدار 26 والإصدارات الأحدث
يتداخل نطاق مدة الحجز مع معيار حالي HOTEL_LENGTH_OF_STAY_OVERLAPS_WITH_EXISTING_CRITERION LENGTH_OF_BOOKING_OVERLAPS_WITH_EXISTING_CRITERION
يتداخل نطاق فترة الحجز المُسبَق مع معيار حالي HOTEL_ADVANCE_BOOKING_WINDOW_OVERLAPS_WITH_EXISTING_CRITERION ADVANCE_BOOKING_WINDOW_OVERLAPS_WITH_EXISTING_CRITERION
يتداخل النطاق الزمني لتاريخ البدء مع معيار حالي HOTEL_CHECK_IN_DATE_RANGE_OVERLAPS_WITH_EXISTING_CRITERION START_DATE_RANGE_OVERLAPS_WITH_EXISTING_CRITERION
قبل start_date من أمس (بالتوقيت العالمي المنسَّق) HOTEL_CHECK_IN_DATE_RANGE_START_DATE_TOO_EARLY START_DATE_RANGE_START_DATE_TOO_EARLY
‫end_date أكثر من 330 يومًا في المستقبل (بالتوقيت العالمي المنسَّق) HOTEL_CHECK_IN_DATE_RANGE_END_DATE_TOO_LATE START_DATE_RANGE_END_DATE_TOO_LATE
‫start_date بعد end_date HOTEL_CHECK_IN_DATE_RANGE_REVERSED START_DATE_RANGE_REVERSED

تنطبق أخطاء التحقّق التالية على جميع إصدارات واجهة برمجة التطبيقات:

  • FieldError.REQUIRED: لم يتم إدخال حدّ مطلوب للنطاق (مثل advance_booking_window بدون min_days أو max_days).
  • RangeError.TOO_HIGH / RangeError.TOO_LOW: القيمة خارج الحدود، مثل advance_booking_window.max_days أكبر من 330، أو min_days أكبر من max_days في advance_booking_window أو length_of_booking، أو bid_modifier خارج 0.1–10.0 في advance_booking_window أو length_of_booking أو start_day_of_week أو start_date_range، أو bid_modifier خارج 0.5–2.0 (بما في ذلك 0) في user_set_dates.
  • ResourceCountLimitExceededError.RESOURCE_LIMIT: تتجاوز المجموعة الإعلانية الحدّ الأقصى المسموح به لتعديلات عروض الأسعار لكل مجموعة إعلانية.
  • MutateError.INCONSISTENT_FIELD_VALUES: لا يتطابق حقل فرعي للتعداد بمعرّف ثابت (مثل user_set_dates.type أو start_day_of_week.day_of_week أو device.type) مع معرّف المعيار المحدّد في resource_name.
  • ContextError.OPERATION_NOT_PERMITTED_FOR_CONTEXT: محاولة إضافة تعديل عرض أسعار السفر إلى نوع حملة غير متوافق أو حملة غير مؤهَّلة على شبكة البحث.