部屋の条件の組み合わせ

条件の組み合わせを使用すると、1 つの宿泊施設に対して複数の客室タイプを定義したり、標準的な宿泊料金に加えて、料金機能(料金と利用条件を対象とした追加サービス)を備えた部屋の旅行プランを組み合わせたりすることができます。

主なコンセプトとワークフロー

条件の組み合わせを使用すると、物理的なパッケージ タイプとサービス パッケージの組み合わせを追加で指定できます。

次の図に、条件の組み合わせの例を示します。

この例では、最初のバンドルが基本部屋であり、大人 1 人に対する割引が適用されます。2 番目は別の客室タイプで、大人 3 名まで宿泊できます。3 つ目は、同じプロパティ内の別の客室タイプです。4 枚目は基本室の「プレミアム」パッケージで、無料の朝食やその後のチェックアウトなどの設備が含まれる場合があります。

次の図は、料金の機能の例を示しています。

検索結果に条件の組み合わせと料金情報を表示する場合、標準の客室料金と同じ選択プロセスが適用されます。

条件の組み合わせ

条件の組み合わせを定義し、特徴をトランザクション メッセージで定義します。トランザクション メッセージのルート要素は <Transaction> です。

Transaction メッセージの構造は、条件の組み合わせまたは料金機能に関するメタデータの定義や、条件の組み合わせの料金または空室状況の更新などによって異なります。

メタデータ
条件の組み合わせを定義し、対象物のメタデータを評価するには、<PropertyDataSet> 要素の <PackageData> を使用します。詳しくは、客室とパッケージのメタデータを定義するをご覧ください。条件の組み合わせでは、物理的な客室の説明に既存の <RoomData> 要素を使用します。
料金と空室状況
条件の組み合わせと料金を定義します。それには、パッケージと旅行プランの組み合わせごとに <Result><RoomBundle> 要素を使用します。詳細については、料金と可用性の定義をご覧ください。

基本客室料金、税金、その他の手数料は、条件の組み合わせで使用する場合、<Result> では必須です。条件の組み合わせで使用する場合は削除できます。実際のアカウントを使用して条件の組み合わせを実装する場合は、次の手順を実施します。

  1. <Result> で基本客室料金、税金、その他の料金を入力し、基本客室バンドルと一致する条件の組み合わせを 1 つ追加します。

  2. 必要に応じて、同じプロパティの他の客室タイプまたは別のサービス パッケージ用に、同じ <Result> ブロック内で追加の条件の組み合わせを定義します。

  3. 条件の組み合わせがリリースされたら、基本客室の料金、税金、その他の手数料を削除します。

条件の組み合わせのメタデータ

条件の組み合わせと料金機能を定義する際は、通常、条件の説明、料金に含まれるその他のサービス、条件の組み合わせに関するその他の情報を事前に定義します。この情報は、条件の組み合わせのメタデータと呼ばれます。このメタデータは、料金の更新では参照しますが、料金の更新メッセージには含めません。

条件の組み合わせを定義する場合は、物理的な客室の説明に既存の <RoomData> 要素を使用し、客室の物理的な説明に含まれていない料金の要素と条件に <PackageData> 要素を使用します。

<RoomData> 要素と <PackageData> 要素を使用すると、トランザクション メッセージで送信される反復データの量が削減されるため、ホテルリストと宿泊料金フィードのサイズを大幅に削減できます。

たとえば、客室の名前や説明などのデータは、通常は旅行プランごとに繰り返されます。<RoomData> 要素と <PackageData> 要素を使用して、このタイプのデータを 1 回定義できます。旅行プラン固有の Room Bundle データは、保存されている客室とパッケージの定義とマージされ、エンドユーザーに表示されます。

Google では、お客様のメタデータと旅行プラン固有のデータを照合して、広告のコンテンツをレンダリングします。<RoomData> 要素と <PackageData> 要素の名前と説明を組み合わせる特別な処理により、物理的な部屋を <RoomData> に記述し、機能とパッケージの詳細を <PackageData> に記述します。

1 つの客室または条件の組み合わせに対して客室データとパッケージ データの両方を定義する場合、Google は両方をハイフンで区切って広告出力に含めます。

写真に関するガイドライン

客室の写真を送信する際、写真が確実に表示されるように、以下のガイドラインを遵守してください。

  • バリアフリーの客室の写真など、部屋のタイプごとに写真を送信します。たとえば、ロールイン シャワーのように、さまざまなバスルーム設備が置かれているバリアフリーの客室の写真などです。

  • 部屋の写真 4 枚以上、浴室の写真 1 枚以上を含めます。

  • 写真は、宿泊施設ではなく部屋そのものにする必要があります。最も重要な写真は、ベッド、部屋全体、浴室、リビング、室内の景色(残りの写真は同じ写真)で、該当する場合はバルコニー、パティオ、テラスの写真です。

    デスク、キッチン、コーヒー メーカー、紅茶メーカー、部屋の特徴的な写真も撮影できます。

  • 人々や施設の写真(外観や施設のアメニティなど)は、観光/観光スポット、食べ物は使わないでください。

  • 物体のクローズアップ(ステムウェアなど)の接写は避けます。

  • 写り込みがあっても、ブランド名やブランド名が入ったブランド名は避けてください。ラベルの付いたトイレタリーは、浴室全体を撮影してもかまいません。テキスト、ロゴ、透かしの大きなブロックを写真に含めないでください。

  • 広角で標準の横向き(横向き)の写真を提供します。魚眼や歪んだ写真は使用しないでください。最高の解像度で写真を撮影してランキングを改善します。同じ写真を複数の解像度で送信する必要はありません。

データの優先順位

条件の組み合わせデータは、すべてのソースから収集され、優先順位ルールを使用して組み合わされて、特定のホテル、旅行プラン、条件の組み合わせの最終データを生成します。優先順位は以下のとおりです。

  1. (最も低い)パートナー データ
  2. 宿泊施設データ
  3. <RoomData>。ここで、<RoomID><RoomBundle> ブロックの <RoomID> と一致します。
  4. <PackageData>。ここで、<PackageID><RoomBundle> ブロックの <PackageID> と一致します。
  5. (最高)<RoomBundle>

価格と在庫状況を定義する

条件の組み合わせの料金と空室状況を定義するには、トランザクション メッセージでパッケージまたは旅行プランの組み合わせごとに <RoomBundle> 要素を使用します。<RoomBundle> 要素は <Result> 要素内に配置する必要があります。2 つの <RoomBundle> 要素のサンプルコードを以下に示します。この例では、2 つの <RoomBundle> 要素が、<RoomID><PackageID> を使用して、客室とパッケージのメタデータを参照しています。

<Result> ごとに、含まれている条件の組み合わせのセットが、そのプロパティまたは旅行プランの組み合わせの既存のセットを上書きします。<Result> 要素に条件の組み合わせまたは料金機能を定義しない場合は、すべての条件の組み合わせが削除され、そのホテルまたは旅行プランの基本の客室のみが検索結果に表示されます。

<Name> などの要素を使用して、宿泊バンドルを見込み顧客にアピールし、ホテルのランディング ページと一致するようにしてください。この例では、メタデータに名前などのわかりやすい情報を定義します。

<RatePlanID> はオプションで、客室とパッケージの組み合わせの一意の識別子を表します。動的なランディング ページ(以前の POS)の URL を作成する際は、変数に RatePlanID を使用することを強くおすすめします。詳しくは、変数と条件の使用をご覧ください。

条件の組み合わせでは、次の要素はオプションです。

<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>

ライブ アカウントに Room Bundle を実装する場合は、Room Bundle が有効になった後に <Baserate> を削除します。

<Result>
  <!-- Note: When using Room Bundles, the top level result price is no
       longer necessary. -->
  <Property>180054</Property>
  <Checkin>2017-10-07</Checkin>
  <Nights>2</Nights>
  <!-- Base Room Bundle -->
  <RoomBundle>
    <RoomID>060773</RoomID>
    <PackageID>P54321</PackageID>
    <Baserate currency="USD">199.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <!-- RatePlanID is optional and represents the unique identifier for a
    room and package data combination. We strongly recommend using RatePlanID
    as a variable to build your dynamic landing page (formerly Point of Sale)
    URL. For details, see Using Variables and Conditions. -->
    <RatePlanID>060773-P54321</RatePlanID>
  </RoomBundle>
  <!-- Premium Room Bundle -->
  <RoomBundle>
    <RoomID>436233</RoomID>
    <PackageID>P12345</PackageID>
    <!-- Price for 4 ("occupancy") -->
    <Baserate currency="USD">298.88</Baserate>
    <Tax currency="USD">42.12</Tax>
    <OtherFees currency="USD">10.00</OtherFees>
    <RatePlanID>436233-P12345</RatePlanID>
  </RoomBundle>
</Result>

客室とパッケージのメタデータを定義する

条件の組み合わせメタデータを定義するには、トランザクション メッセージの <PropertyDataSet> 要素内で <PackageData> 要素と <RoomData> 要素を使用します。

客室とパッケージのメタデータは、料金と空室状況のデータとは別のトランザクション メッセージで定義します。このデータを事前に定義しておけば、旅行プランごとに客室やパッケージごとに、説明、写真の URL、設備など、同じ情報を繰り返し含める必要はありません。

Google はメタデータを保存し、広告が表示される際にそのメタデータを広告に挿入します。客室とパッケージのメタデータは、新しいトランザクション メッセージでいつでも更新できます。

トランザクション メッセージでは、パッケージ ID と客室 ID を各ブロックに設定し、価格更新の <Result> ブロックで参照します。

客室とパッケージのデータが変更された場合(たとえば、新しい部屋のタイプをプロパティに追加した場合は、更新された客室とパッケージのデータを含む新しい Transaction メッセージを送信します)、Google は客室またはパッケージに関する既存のメタデータを新しいデータに置き換えます。

初期設定時にメタデータを定義することをおすすめします。メタデータを定義したら、価格更新<RoomID> 値と <PackageID> 値を参照するだけでよく、それらの情報を再度含める必要はありません。Google はこれらの ID を使用して、客室と条件の組み合わせを、保存されたメタデータと照合します。これにより、トランザクション メッセージの全体的なサイズを大幅に削減できます。

客室と旅行プランの組み合わせの料金は、客室やパッケージの説明より頻繁に変更されるため、トランザクション メッセージを使用する方が、メタデータを一度定義してから参照する方がはるかに効率的です。また、データをインラインで定義するのではなく、メタデータを使用することで、客室の説明の不一致などのエラーを排除することもできます。

メタデータと価格を個別に定義する際に推奨される効率的な方法は、次のとおりです。

<!-- Efficient method of defining Room Bundles -->
<!----- Occupancy of 2 and 4 example ------>

<Transaction timestamp="2019-04-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note: Once defined it does not have to be repeated for future Transaction Messages. -->
  <!--       PropertyDataSets can also be defined and sent in their own Transaction Message -->
  <!--       separately from pricing. Google can be configured to pull just PropertyDataSets -->
  <!--       once per day (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate 4, but bundle is for 2 -->
      <Capacity>4</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/imageQueen.jpg</URL>
        <Caption>
          <Text text="A bright and breezy way to enjoy your mornin'
            cuppa tea." language="en"/>
          <Text text="Une façon lumineuse et aérée pour profiter
            de votre journée tasse de thé." language="fr"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate 4 and bundle is for 4 -->
      <Capacity>4</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/imageKing.jpg</URL>
        <Caption>
          <Text text="A bright and breezy way to enjoy your mornin'
            cuppa tea." language="en"/>
          <Text text="Une façon lumineuse et aérée pour profiter
            de votre journée tasse de thé." language="fr"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <BreakfastIncluded/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>

    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy") -->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>060773-P12345</RatePlanID>
    </RoomBundle>
    <!-- Continue providing all available RoomBundle rates under matched
         property for any other occupancies -->
  </Result>
</Transaction>

定員と収容人数

条件の組み合わせを定義する際は、定員数と定員の違いを把握する必要があります。

在宅確認
条件の組み合わせが適用されるゲストの数です。たとえば、「ハネムーン パッケージ」の定員は 2 人です。パッケージの定員の値は、<PackageData> 要素または <RoomBundle> 要素の <Occupancy> 子要素を使用して設定します。
容量
会議室が物理的に収容できる最大人数です。客室の収容人数は、定員人数と同じかそれ以上になります。たとえば、ホテルの「ハネムーン スイート」の定員が 6 人であっても、1 人 1 セットのみの宿泊料金を設定したとします。パッケージの容量の値は、<RoomData> 要素の <Capacity> 子要素を使用して設定します。

条件の組み合わせの料金を設定する際は、バンドルの対象となるゲストの料金(バンドルの <Occupancy> 要素で指定された値)を指定する必要があります。<Occupancy> が 2 に設定されている場合、そのパッケージの料金は 2 人分の価格である必要があります。<Occupancy> を 4 人に設定して、2 人に対するバンドルの料金を設定することはできません。

共有ルーム

また、条件の組み合わせの定員数と収容人数を使用して、ホステルなどの共有の宿泊施設の料金を設定します。たとえば、ベッドが 8 台ある寮の 1 人あたりの料金を設定するには、定員を 1 に、定員を 8 に設定し、<RoomData> の名前でそのように識別します。例をご覧ください

条件の組み合わせを更新する

このセクションでは、利用できなくなった客室バンドルを削除する方法と、既存の条件の組み合わせを更新する方法について説明します。

条件の組み合わせの削除

条件の組み合わせを削除する方法は、ホテルの料金とは異なります。

客室または旅行プランの組み合わせを在庫から削除するには、<Result> 要素の <Baserate>-1 に設定します。特定の客室や旅行プランの条件の組み合わせを削除するには、トランザクション メッセージの <Result> ブロックから <RoomBundle> 要素を削除します。

データフィードの条件の組み合わせは 0 ~ 10 の数字のセットです。条件の組み合わせを Google に送信すると、現在のセット一式が送信されます。個別の Room Bundle の値を、以前に利用できたバンドルが使用不可としてマークしないように変更することはできません。最新のバンドルに含まれているバンドルのセットが現在のセットに置き換わります。

たとえば、バンドル A、B、C、D があるとします。まず、条件の組み合わせ A、B、C、D のセットを定義するメッセージを送信します。後でバンドル B が売り切れた場合は、バンドル A、C、D のみを含むセット全体を再送信します。条件の組み合わせがすべて完売した場合は、空の条件の組み合わせセットを送信します。

価格調整

条件の組み合わせの料金を変更するには、<Result> 要素で新しい <Baserate> を設定します。

トランザクション メッセージで客室または宿泊プランの <Result> ブロックを更新するたびに、<Result> ごとに使用可能な条件の組み合わせをすべて含める必要があります。既存の条件の組み合わせのセットが新しいセットに置き換えられます。<Result> に条件の組み合わせを指定しない場合、その客室または旅行プランのすべての条件の組み合わせが削除されます。

メタデータの更新

条件の組み合わせのメタデータは、Google からの <Query> へのレスポンスで更新します。

指定されたホテルの客室とパッケージのメタデータを定義するトランザクション メッセージでクエリ メッセージに応答します。詳細については、メッセージのクエリをご覧ください。