商品フィードをExcelに変換

Merchant Centerの商品フィードを表計算ソフトで開ける形に変換します。XMLのアップロード、貼り付け、URL指定に対応。1商品1行、属性を列にして、ID・画像・価格の欠落や重複SKUの診断も表示します。ブラウザ内で完結、登録不要です。

…またはここにドロップしてください。.xml、.rss、.atom、gzip圧縮された .xml.gz に対応します(g: 名前空間付きRSS 2.0、Atom 1.0、その他の商品XML)。

まずブラウザから取得を試みます。ショップ側がクロスオリジン要求を拒否する場合のみ、insighthackerz.com 経由で一度だけ取得します(保存もログ記録もしません)。ログインやIP制限の内側にあるフィードはアップロードが必要です。

仕組み

1. フィードを読み込みます:ファイル、貼り付けたXML、またはURL。URLはまずブラウザから取得し、ショップがクロスオリジン要求を拒否する場合だけ insighthackerz.com 経由で取得します
2. gzip(.xml.gz)を展開し、XML宣言が指定する文字コードをこの端末でデコードします
3. 商品要素を判定します:RSS 2.0 は <item>、Atom 1.0 は <entry>、各種プラットフォームの書き出しは <product>
4. 名前空間の接頭辞を落とし、<g:image_link> は image_link という列にします
5. 入れ子の属性をドット区切りの列に展開します:shipping.country、shipping.price、tax.rate、product_detail.attribute_value
6. 繰り返し出現する値は ' | ' で連結します。additional_image_link や shipping ブロックが複数あっても1行に収まります
7. Googleの商品データ仕様の順に列を並べ、.xlsx(見出し行は太字で固定、オートフィルタ付き)またはUTF-8のCSVとして書き出します

Googleの商品フィードについて

Merchant Centerのフィードは、人ではなくクローラー向けに作られたXMLです。商品ごとに <item> があり、その中に名前空間付きの要素が20〜60個、一部は入れ子で並びます。Excelで開けばXMLツリーが折りたたまれた状態かスキーマ対応のダイアログが出るだけで、ブラウザで開けばタグの壁が現れます。このツールは表計算ソフトが必要とする展開——1商品1行、1属性1列、Googleの仕様が並べる順——を行うので、通常の商品エクスポートと同じように並べ替え、絞り込み、ピボットができます。

素朴なXML→Excel変換ツールが使いものにならない出力を出すのは、入れ子と繰り返しの属性です。商品が複数行に分かれてしまうか、最初の値以外が捨てられてしまいます。ここでは入れ子のブロックをドット区切りの列に(shipping.country、shipping.service、shipping.price)、繰り返しの値を ' | ' で連結するので、画像3枚と配送ルール2件を持つ商品もきっちり1行のままです。これが、自社の商品エクスポートに対するVLOOKUPを成立させます。

ダウンロードの隣に出るフィード診断が、たいてい一番元が取れる部分です。id、title、description、link、image_link、availability、price が欠けている商品を数え、IDの重複(Merchant Centerは1件だけ残して残りを黙って無視します)、150文字の上限を超えるタイトル、brand / GTIN / MPN のいずれも持たない商品、google_product_category が入っている商品の割合を表示します。いずれも、放っておけば翌日に診断タブで見つけることになる不承認理由です。

変換そのものは常にお使いの端末で実行されます。XMLはブラウザ自身のパーサーで読み、.xlsx はJavaScriptで組み立てるため、50MBのフィードもノートPCが読み切る速さで変換でき、順番待ちもファイルサイズの課金段階もありません。アップロードまたは貼り付けたファイルは、タブの外に出ることすらありません。フィードURLはまずブラウザから直接要求し、ショップがクロスオリジン要求を拒否する場合——ほとんどがそうです——に限り、insighthackerz.com を一度だけ経由してメモリ上にのみ保持します。ディスクへの書き込み、キャッシュ、ログはいずれも行わず、どちらの経路を使ったかはページに表示されます。

よくある質問

対応しているフィード形式は?
Merchant Centerが受け付ける2形式——g: 名前空間付きのRSS 2.0 と Atom 1.0——に加えて、Shopifyのアプリ、WooCommerceのプラグイン、T-Soft、Ticimax、Magento など多くのフィード生成ツールが書き出す汎用の <products><product> 形式に対応しています。.gz で終わるファイルはブラウザ内で展開するので、圧縮されたフィードURLのダウンロードをそのまま使えます。
ファイルではなくフィードURLを使えますか?
使えます。ショップが生成するXMLのURL(Merchant Centerに登録しているのと同じアドレス)を貼り付けて「取得」を押してください。まずブラウザが取得を試み、ホストがクロスオリジン要求を許可していない場合は insighthackerz.com 経由で一度だけ取得し、その1リクエストの間だけメモリに保持します。保存もログ記録もしません。ログイン、トークンなしのIP制限、Basic認証の内側にあるフィードはダウンロードしてアップロードしてください。URL経由の上限は40MBです。
フィードのURLや中身はどこかに保存されますか?
保存しません。取得用のエンドポイントはディスクに何も書かず、レスポンスに no-store を設定し、URLのリクエストログも残さず、insighthackerz.com からの要求にしか応答しません。解析と表計算ファイルの生成はどちらの経路でもブラウザ内で行われるため、商品データ自体がサーバーに残ることはありません。
shipping や tax のような入れ子の属性はどうなりますか?
ドット区切りの列になります——shipping.country、shipping.service、shipping.price、tax.rate。商品に配送ブロックが複数ある場合は、値が同じ順に並び、' | ' で連結されます。何も捨てないので、シートはフィードの無損失なビューになります。
サイズの上限はありますか?
実質的な上限はブラウザのメモリです。およそ150MBまでのファイルを受け付け、10万商品・20〜50MBのフィードは通常のノートPCで日常的に処理できます。Excelの1,048,576行の上限を超えるフィードは、同じブックの複数シートに分割します。
.xlsx でGTINやIDの先頭のゼロは保持されますか?
保持されます。すべてのセルを文字列として書き出すため、0123456789012 が数値に変換されて崩れることはありません。価格が「18.90 EUR」のまま入るのも同じ理由で、値はフィードの内容そのままです。数値の列が必要なら、そこから分割してお使いください。
表計算ファイルからフィードに戻せますか?
ここではできません。これは読んで点検するためのツールです。フィードのレビュー、Merchant Centerを触らない人への商品リストの受け渡し、二つのエクスポートの差分確認に使ってください。フィードの生成は、商品データを持つプラットフォーム側の仕事です。