条件の組み合わせ

条件の組み合わせを使用して、1 軒の宿泊施設に対し複数の客室タイプを定義したり、標準料金以外の客室の宿泊プランと料金特典(販売料金と条件が設定された追加サービス)の組み合わせをユーザーに提示したりできます。

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

条件の組み合わせを使用すると、物理的な客室タイプと複数のサービス パッケージを追加して組み合わせて提供できます。

次の画像は、パソコンとモバイル デバイスでの客室の組み合わせの例を示しています。

画像を含む条件の組み合わせ

この例は、必要な宿泊人数とそれぞれの客室画像に対応するさまざまな客室タイプで構成される条件の組み合わせのモバイル版です。

注: 画像のない宿泊プランは、ベッドのプレースホルダ画像に置き換えられます。

レートに関する機能

次の図に、料金特典の例を示します。

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

条件の組み合わせ

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

Transaction メッセージの構造は、条件の組み合わせや料金特典についてのメタデータの定義や、条件の組み合わせの料金設定や空室状況を更新するなど、使用目的により異なります。

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

基本の客室の料金、税金、その他の手数料は、条件の組み合わせで使用しない場合は <Result> で必須ですが、条件の組み合わせで使用する場合はその必要はありません。公開中のアカウントを使用して条件の組み合わせを実装する手順は次のとおりです。

  1. 基本客室の料金、税金、その他の手数料を <Result> に含め、基本条件の組み合わせと一致する条件の組み合わせを 1 つ追加します。

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

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

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

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

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

<RoomData> 要素と <PackageData> 要素を使用すると、Transaction メッセージで送信される重複データの量を削減できるため、ホテルリストとホテル料金フィードのサイズを大幅に削減できます。

たとえば、通常は客室名や説明などのデータはすべての宿泊プランで繰り返し使われるため、<RoomData> 要素と <PackageData> 要素を使用してこのタイプのデータを一度だけ定義しておいて、旅行プラン固有の条件の組み合わせデータは、エンドユーザーに表示するため、保存されている客室とパッケージの定義と統合されます。

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>

公開中のアカウントに条件の組み合わせを実装する場合は、条件の組み合わせを有効にした後に <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>

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

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

客室とパッケージのメタデータは、料金設定と空室状況のデータとは別の Transaction メッセージで定義します。このデータを事前に定義しておくことで、料金の更新の際にすべての宿泊プランのすべての客室やパッケージについての説明、写真の URL、設備、その他のデータなどの重複する情報を含める必要がなくなります。

Google はお客様のメタデータを保存し、広告が表示される際にそのデータを挿入します。客室とパッケージのメタデータは、新しい Transaction メッセージを使っていつでも更新できます。

Transaction メッセージでは、各ブロックでパッケージ ID と客室 ID を設定し、後で料金更新データの <Result> ブロックでそれらを参照します。

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

メタデータの定義は、初期設定時に行うことをおすすめします。事前にメタデータを定義しておくと、その情報をもう一度すべて含めるのではなく、<RoomID><PackageID> の値を料金設定の更新データ内で参照するだけでよくなります。Google はこれらの ID を使用して、客室および条件の組み合わせを保存されているデータと照合します。これにより、Transaction メッセージの全体的なサイズを大幅に削減できます。

客室や宿泊プランの組み合わせの料金は、客室やパッケージの説明と比べてかなり頻繁に変更されるため、メタデータを定義してから後で参照することで、もっと効率的に Transaction メッセージを利用できます。さらに、データをインラインで定義する場合と比べ、メタデータを使用すると客室の説明の不一致といったエラーを排除することができます。

メタデータと料金を別々に定義する場合に推奨される最も効率的な方法を以下に示します。

<!-- 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 人であっても、条件の組み合わせには宿泊客 2 名分の料金を設定します。パッケージの容量の値は、<RoomData> 要素の <Capacity> 子要素を使用して設定します。

条件の組み合わせの料金を設定する際は、その条件の組み合わせが対象とする宿泊客の数(条件の組み合わせの <Occupancy> 要素で指定した値)の料金を指定する必要があります。<Occupancy> が 2 名に設定されている場合、そのパッケージの料金は 2 名分にする必要があります。<Occupancy> を宿泊客 4 名に設定した場合、条件の料金を 2 名分にすることはできません。

相部屋

また、条件の組み合わせの定員と収容人数を使用して、共用の宿泊施設(ホステルなど)の料金を設定することもできます。たとえば、8 台のベッドを備えたドミトリーの 1 名あたりの料金を設定するには、定員数を 1 に設定し、収容人数を 8 に設定して、<RoomData> 名で相部屋であることを明示します。例を参照

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

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

条件の組み合わせの削除

条件の組み合わせの削除方法は、宿泊料金の削除方法とは異なります。

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

データフィード内の条件の組み合わせは、セットと見なされます(数は 0 から数十までの任意)。条件の組み合わせを Google に送信する場合は、現在の完全なセットを送信します。個別の条件の組み合わせの値を変更して、以前に利用可能だったものを利用不可としてマークすることはできません。最新の Transaction メッセージ内にあるバンドルのセットが、現在のセットを置き換えます。

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

価格調整

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

Transaction メッセージで客室と宿泊プランの <Result> ブロックを更新するたびに、個々の <Result> で利用できる条件の組み合わせ一式を指定する必要があります。Google は条件の組み合わせの既存セットを新しいセットに置き換えます。<Result> で条件の組み合わせを指定しないと、Google はその客室や宿泊プランの条件の組み合わせをすべて削除します。

メタデータの更新

Google から <Query> への応答で、条件の組み合わせのメタデータを更新します。

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