バッチ取り込み

データフィードを使用すると、レストラン、サービス、メニューを Order with Google で利用できるようになります。

このドキュメントでは、サンドボックスと本番環境のインベントリをホストし、バッチ取り込みを使用して Order with Google で在庫を更新する方法について説明します。

データフィード環境

統合開発では、3 つのデータフィード環境を使用できます。

フィード環境 説明 オフライン ストアへの
サンドボックス フィード開発のテスト環境。 必須
本番環境 起動するインベントリの本番環境。 必須

データフィードのホスティング

Order with Google でサンドボックスと本番環境のデータフィードを一括取り込みで処理するには、サイトマップを使用して、データフィード ファイルを Google Cloud Storage、Amazon S3 または HTTPS でホストする必要があります。

サンドボックス環境と本番環境のデータフィードを個別にホストすることをおすすめします。この方法では、本番環境に変更をデプロイする前に、サンドボックス フィード環境で開発とテストを行うことができます。

たとえば、Google Cloud Storage をホスティング オプションとして使用する場合は、次のパスになります。

  • サンドボックス フィード: gs://foorestaurant-google-feed-sandbox/
  • 本番環境フィード: gs://foorestaurant-google-feed-prod/

インベントリをホストするには、次の手順を行います。

  1. データフィード ファイルを生成します。
  2. ホスティング ソリューションを選択します。
  3. データフィードをホストします。
  4. データフィード ファイルを定期的に更新する本番環境のデータフィードは毎日更新する必要があります。

在庫フィードの作成方法について詳しくは、RestaurantServiceMenu の各エンティティに関するドキュメントと、データフィードの作成セクションをご覧ください。

データフィード ファイルのガイドライン

各ファイル(複数のエンティティを含む)は 200 MB を超えないようにしてください。最上位のエンティティ RestaurantServiceMenu およびその子エンティティは、合わせて 4 MB を超えないようにする必要があります。

ホスティング ソリューションを選択する

次の表に、データフィードをホストするための方法と、Order with Google で使用されるホストの仕組みを示します。

Amazon S3 Google Cloud Storage HTTPS とサイトマップ
認証情報とアクセス

Google に以下の情報を提供します。

  • アクセスキー ID
  • シークレット アクセスキー
  • 本番環境とサンドボックスの S3 ディレクトリと marker.txt ファイルへのパス。パスは s3:// で始まる必要があります。

S3 バケットには、次の情報を含める必要があります。

  • 広告枠のフィード ファイル。
  • marker.txt: 取得に使用するタイムスタンプが含まれます。

marker.txt ファイルの例: 2018-12-03T08:30:42.694Z

本番環境とサンドボックスのバケット ディレクトリと marker.txt ファイルへのパスを Google に提供します。パスは gs:// で始める必要があります。

Google コンサルタントから提供されるサービス アカウントを Google Cloud Storage バケットの読み取り者として追加します。

Google Cloud Storage(GCS)のアクセス制御について詳しくは、Google Cloud Platform Console: バケットの権限の設定をご覧ください。

GCS バケットには、次の情報を含める必要があります。

  • 広告枠のフィード ファイル。
  • marker.txt: 取得に使用するタイムスタンプが含まれます。

marker.txt ファイルの例: 2018-12-03T08:30:42.694Z

Google に以下の情報を提供します。

  • 基本認証の認証情報。
  • 本番環境とサンドボックスのサイトマップ パス。パスは https:// で始まる必要があります。
  • プロトコル: フィード ファイルは、HTTP ではなく HTTPS で利用できるようにする必要があります。
  • セキュリティ: ホストするフィード ファイルを Basic 認証で保護することを強くおすすめします。
取得する必要があるファイルを Google が認識する仕組み バケット内のすべてのファイルのディレクトリ リスト。 バケット内のすべてのファイルのディレクトリ リスト。 サイトマップに記載されているファイルの個々の URL。
ファイルを取得する準備ができていることを Google が認識する仕組み データフィードの生成が完了したら、最新のタイムスタンプで marker.txt ファイルを更新します。 データフィードの生成が完了したら、最新のタイムスタンプで marker.txt ファイルを更新します。 データフィードの生成が完了したら、sitemap.xml のレスポンス ヘッダー last-modified を最新のタイムスタンプで更新します。
ファイルの制限

ファイルの最大数: 100,000。

Amazon S3 バケットの合計ファイルは 100,000 個未満でなければなりません。

ファイルの最大数: 100,000。

Google Cloud Storage バケットの合計ファイルは 100,000 個未満である必要があります。

ファイルの最大数: 100,000。

サイトマップの XML ファイル内のファイルパスの数は 100,000 未満にする必要があります。

データフィードを接続して一括取り込み

フィードをホストしたら、パートナー ポータルでプロジェクトに接続する必要があります。本番環境フィードの初期設定は、[オンボーディング タスク] ページで行います。本番環境フィードとサンドボックス フィードの設定は、管理者ロールを持つポータル ユーザーであれば、いつでも [構成 > フィード] ページで更新できます。サンドボックス環境は開発とテストを目的としていますが、本番環境フィードはユーザーに表示されます。

Amazon S3 でデータフィードをホストする場合

  1. パートナー ポータルで、[設定] > [フィード] に移動します。
  2. [編集] をクリックし、[フィードを更新] フォームに入力します。

    • フィード配信方法: Amazon S3 に設定します。
    • マーカー ファイル: marker.txt ファイルの URL を指定します。
    • データファイル: データフィードを含む S3 バケットの URL を指定します。
    • Access ID: S3 リソースからの読み取り権限を持つ IAM アクセスキー ID を入力します。
    • Access Key: S3 リソースからの読み取り権限を持つ IAM のシークレット アクセスキーを入力します。
  3. [送信] をクリックします。
  4. 1 ~ 2 時間後に、バッチ取り込みによってフィード ファイルが取得されるかどうかを確認します。

Google Cloud Storage でデータフィードをホストする場合

  1. パートナー ポータルで、[設定] > [フィード] に移動します。
  2. [編集] をクリックし、[フィードを更新] フォームに入力します。

    • フィード配信方法: Google Cloud Storage に設定します。
    • マーカー ファイル: marker.txt ファイルの URL を指定します。
    • データファイル: データフィードを含む GCS バケットの URL を指定します。
  3. [送信] をクリックします。
  4. GCS バケットにアクセスするためにサービス アカウントが作成されます。アカウント名は、オンボーディング タスクの完了後は[設定] > [フィード] で確認できます。このサービス アカウントには、「Storage レガシー オブジェクト読み取り」のロールが必要です。このロールは、Google Cloud Console の [IAM] ページでサービス アカウントに付与できます。
  5. 1 ~ 2 時間後に、バッチ取り込みによってフィード ファイルが取得されるかどうかを確認します。

HTTPS でデータフィードをホストする場合

  1. パートナー ポータルで、[設定] > [フィード] に移動します。
  2. [編集] をクリックし、[フィードを更新] フォームに入力します。

    • フィード配信方法: HTTPS に設定します。
    • サイトマップ ファイル: sitemap.xml ファイルの URL を入力します。
    • Username: HTTPS サーバーにアクセスするためのユーザー名の認証情報を入力します。
    • パスワード: HTTPS サーバーにアクセスするためのパスワードを入力します。
  3. [送信] をクリックします。
  4. 1 ~ 2 時間後に、バッチ取り込みによってフィード ファイルが取得されるかどうかを確認します。

パスの例

次の表に、各ホスティング オプションのパスの例を示します。

Amazon S3 Google Cloud Storage HTTPS とサイトマップ
パス s3://foorestaurant-google-feed-sandbox/ gs://foorestaurant-google-feed-sandbox/ https://sandbox-foorestaurant.com/sitemap.xml
マーカー ファイル s3://foorestaurant-google-feed-sandbox/marker.txt gs://foorestaurant-google-feed-sandbox/marker.txt 該当なし

HTTPS ホスティングのためのサイトマップ

サイトマップを定義する際は、次のガイドラインを参考にしてください。

  • サイトマップ内のリンクはファイル自体を指す必要があります。
  • サイトマップに独自のドメイン名ではなくクラウド プロバイダへの参照が含まれている場合は、URL の先頭(https://www.yourcloudprovider.com/your_id など)が安定していて、バッチジョブに固有のものであることを確認してください。
  • (部分的なデータ アップロードが行われた場合など)部分的なサイトマップをアップロードしないように注意してください。サイトマップを含めると、サイトマップ内のファイルのみが Google に取り込まれるため、在庫レベルが低下し、フィードの取り込みがブロックされる可能性があります。
  • サイトマップで参照されるファイルのパスを変更しないでください。たとえば、最初はサイトマップで https://www.yourcloudprovider.com/your_id/10000.json を指定していないが、明日は https://www.yourcloudprovider.com/your_id/20000.json を参照するようにします。
サイトマップの例

データフィード ファイルを提供する sitemap.xml ファイルの例を以下に示します。

例 1: 販売者でグループ化されたエンティティ(推奨)。

XML

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
   <loc>https://your_fulfillment_url.com/restaurant_1.ndjson</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
 <url>
   <loc>https://your_fulfillment_url.com/restaurant_2.ndjson</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
 <url>
   <loc>https://your_fulfillment_url.com/restaurant_3.ndjson</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
</urlset>

例 2: タイプ別にグループ化されたエンティティ

XML

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
   <loc>https://your_fulfillment_url.com/restaurant.json</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
 <url>
   <loc>https://your_fulfillment_url.com/menu.json</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
 <url>
   <loc>https://your_fulfillment_url.com/service.json</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
</urlset>

データフィードを更新する

データフィードが接続されると、Google は 1 時間に 1 回更新を確認しますが、marker.txt または sitemap.xml ファイルが変更された場合にのみ、すべてのデータフィードを取り込みます。在庫が古くなりないようにするため、データフィードは 1 日に 1 回更新することをおすすめします。

データフィードが変更され、バッチ取り込みの準備ができたことを指定するには、marker.txt ファイルの last-modified オブジェクトのメタデータ フィールド(GCP と S3 の場合)または sitemap.xml ファイルの last-modified レスポンス ヘッダーを更新します。Google はこれらの値を使用して、データフィードの新しさを決定します。

バッチフィードの取り込み中に、

  • 現在の OwG インベントリに存在しず、エラーがない新しいエンティティが挿入されます。
  • 取り込みにエラーが発生しず、dateModified が現在のエントリより新しい、または dateModified がフィード取り込み開始時間になっていない場合は、更新中の現在のエントリよりも新しいエンティティが最新でないため、それらのエンティティが在庫にすでに存在しています。
  • 以前のフィードに含まれていて、処理中のバッチ フィードに含まれなくなったエンティティは削除されます(フィードにファイルレベルのエラーがない場合)。

タイムスタンプまたは last-modified レスポンス ヘッダーは、すべてのデータフィード ファイルを生成して更新した後にのみ更新する必要があります。データフィードを更新するバッチジョブを、1 日 1 回のみ実行するように制限します。または、バッチジョブ間の間隔を 3 時間以上空けてください。これらの手順を行わないと、Google が古いファイルを取得することがあります。