データフィードを使用すると、レストラン、サービス、メニューを最初から最後まで注文できます。
このドキュメントでは、サンドボックスと本番環境のインベントリをホストし、バッチ取り込みを使用して「エンドツーエンドで注文」でインベントリを更新する方法について説明します。
データフィードの環境
統合の開発に使用できるデータフィード環境は 3 つあります。
フィード環境 | 説明 | オフライン ストアへの |
---|---|---|
サンドボックス | フィード開発用のテスト環境。 | 必須 |
本番環境 | リリースするインベントリの本番環境。 | 必須 |
データフィードのホスティング
エンドツーエンドで注文し、サンドボックスと本番環境のデータフィードをバッチ取り込みで処理するには、Google Cloud Storage、Amazon S3、または HTTPS で、サイトマップを使用してデータフィード ファイルをホストする必要があります。
サンドボックス環境と本番環境のデータフィードは別々にホストすることをおすすめします。このアプローチでは、変更を本番環境にデプロイする前に、サンドボックス フィード環境で開発とテストを行うことができます。
たとえば、ホスティング オプションとして Google Cloud Storage を使用する場合、パスは次のようになります。
- サンドボックス フィード:
gs://foorestaurant-google-feed-sandbox/
- プロダクション フィード:
gs://foorestaurant-google-feed-prod/
インベントリをホストする手順は次のとおりです。
- データフィード ファイルを生成します。
- ホスティング ソリューションを選択する。
- データフィードをホストします。
- データフィード ファイルは定期的に更新してください。本番環境のデータフィードは毎日更新する必要があります。
在庫フィードの作成方法について詳しくは、Restaurant
、Service
、Menu
の各エンティティに関するドキュメントと、データフィードを作成するセクションをご覧ください。
データフィード ファイルに関するガイドライン
各ファイルには複数のエンティティを含めることができ、ファイルのサイズは 200 MB を超えないようにしてください。最上位エンティティの Restaurant
、Service
、Menu
と子エンティティは、合わせて 4 MB 以下である必要があります。
ホスティング ソリューションの選択
次の表に、データフィードをホストするオプションと、ホストがエンドツーエンドで注文する仕組みを示します。
Amazon S3 | Google Cloud Storage | サイトマップを含む HTTPS | |
---|---|---|---|
認証情報とアクセス |
Google に次の情報を提供します。
S3 バケットには次の情報を含める必要があります。
|
本番環境用バケット、サンドボックス バケット ディレクトリ、 Google コンサルタントから提供されたサービス アカウントを Google Cloud Storage バケットのリーダーとして追加します。 Google Cloud Storage(GCS)へのアクセスを制御する方法について詳しくは、Google Cloud Platform Console: バケットの権限の設定をご覧ください。 GCS バケットには、次の情報を含める必要があります。
|
Google に次の情報を提供します。
|
取得が必要なファイルを 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 でデータフィードをホストする場合
- アクション センターで、[Configuration] > [Feeds] に移動します。
-
[編集] をクリックし、[フィードの更新] フォームに入力します。
- フィードの配信方法: [Amazon S3] に設定します。
- Marker File:
marker.txt
ファイルの URL を指定します。 - データファイル: データフィードが含まれる S3 バケットの URL を指定します。
- Access ID: S3 リソースからの読み取り権限を持つ IAM アクセスキー ID を入力します。
- Access Key: S3 リソースからの読み取り権限を持つ IAM シークレット アクセスキーを入力します。
- [送信] をクリックします。
- 1 ~ 2 時間後に、バッチ取り込みでフィード ファイルを取得するかどうかを確認します。
Google Cloud Storage でデータフィードをホストする場合
- アクション センターで、[Configuration] > [Feeds] に移動します。
-
[編集] をクリックし、[フィードの更新] フォームに入力します。
- フィードの配信方法: [Google Cloud Storage] に設定します。
- Marker File:
marker.txt
ファイルの URL を指定します。 - データファイル: データフィードが含まれる GCS バケットの URL を指定します。
- [送信] をクリックします。
- GCS バケットにアクセスするためのサービス アカウントが作成されます。アカウント名は、オンボーディング タスクの完了後に [設定] > [フィード] で確認できます。このサービス アカウントには、「Storage レガシー オブジェクト読み取り」ロールが必要です。このロールは、Google Cloud コンソールの [IAM] ページで、サービス アカウントに付与できます。
- 1 ~ 2 時間後に、バッチ取り込みでフィード ファイルを取得するかどうかを確認します。
HTTPS でデータフィードをホストしている場合
- アクション センターで、[Configuration] > [Feeds] に移動します。
-
[編集] をクリックし、[フィードの更新] フォームに入力します。
- フィードの配信方法: [HTTPS] に設定します。
- サイトマップ ファイル:
sitemap.xml
ファイルの URL を指定します。 - Username: HTTPS サーバーにアクセスするための認証情報を入力します。
- パスワード: HTTPS サーバーにアクセスするためのパスワードを入力します。
- [送信] をクリックします。
- 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 はこれらの値を使用して、データフィードの鮮度を決定します。
バッチフィードが取り込まれると
- 現在の注文エンドツーエンド広告枠には存在せず、エラーのない新しいエンティティが挿入されます。
-
取り込み時にエラーがなく、
dateModified
が現在のエントリより新しいエンティティがすでにインベントリに存在し、dateModified
が存在しない場合は、フィード取り込みの開始時間が現在のエントリよりも新しいエンティティの場合、フィード取り込みの開始時間が更新する現在のエントリよりも新しい場合は、古くなります。 - 以前のフィードに含まれていたエンティティが、処理中のバッチフィードに含まれなくなったエンティティは、フィードにファイルレベルのエラーがなければ削除されます。
タイムスタンプまたは last-modified
レスポンス ヘッダーは、すべてのデータ フィード ファイルが生成されて更新された後にのみ更新する必要があります。データフィードを更新するバッチジョブは 1 日に 1 回だけ実行するように制限します。または、各バッチジョブの間に少なくとも 3 時間の間隔を空けてください。これらの手順を行わないと、Google が古いファイルを取得する可能性があります。