--.--.-- *--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[TOP]
2011.03.31 *Thu

【備忘】どうしたらFC2カートから「Googleショッピング」用のXMLフィードを出力できるか本気出して考えてみた。【FC2カート】

【2013.6.26 追記】
2013年6月11日付で、「Googleショッピング」へのショップ側からの商品登録・利用は完全に有料化(商品リスト広告としての商用モデル化)されました。
この記事時点では無料モデルでしたので当時の状況に基づいた記述となっておりますことをご承知おきください。
また、商品フィード仕様にもいくつかの変更が適用されておりますので、出力プログラム等は参考程度にご覧いただけますようお願いいたします。

「Googleショッピング」というサービスが(まだ一応beta版ではありますが)リリースされてますね。
すごく大雑把に言うと、各商品ページが直接検索にかかるようにするための…まあ一種のSEOと考えるべきでしょうか。
これはショップ側からも利用が無料ということで、少し前から大手ECやASPなどには自動で登録用データを作成する機能が付いたり、いろいろと対応が始まっているようです。もちろん、うちでも。
しかしもちろん、そのような便利機能が付いてないショッピングカートや自前システムでも、フィードさえ作成できればGoogleショッピングへの商品登録は可能です。購入可能なSSL対応ページがちゃんとあって、サイト審査を通れば、ですが。

で、言うまでもないことですが、FC2ショッピングカートにそんな最新機能が付いてるわけはなく。
かろうじて「全商品データをエクスポートする機能」(ありがたいことに)実装されているものの、このエクスポートされるデータがとても中途半端というか…
必須である商品詳細ページURL、商品画像ファイル名などがエクスポート項目に含まれていないのです。…なんという…!!
URLやファイル名は他の項目(カテゴリや商品ID)から類推して記述が可能…とはいえ、5点や10点ならともかく商品が数百点あってはURLを人力で記述するのは現実的に無理。
エクスポートデータをどうにかして登録可能な形に自動変換する方法を考えねばなりません。
すぐに実行できそうな方法として思いついたのは、
 エクスポートした商品データxlsを整形処理するマクロを書く。
あるいは、
 エクスポートした商品データをデータベースに格納して、フィード出力用プログラムを書く。
…どっちも面倒さではたいして違わない感じですね。
どっちでも良いかと思いつつ、でも最新状態の商品データをデータベース化しておけば、データ管理兼バックアップにもなるし、このフィード出力以外にもsitemaps.xmlの自動生成とか更新RSSを出力したりとか、別の機能を盛り込みたいときに流用も可能だし。そういえばそもそもわたしはLAMP技術者のはしくれだし。
ということで、MySQL+PHPでデータベース操作する方法を試してみることにしました。

そんなわけで今日の記事はそのざっくりした備忘録です。
(タイトルにはノリで「本気出して考えてみた」と書いたけど、所詮自分のショップ用なのでどちらかというとやっつけ仕事っぽい)

技術的な内容のみになると思うので、興味のあるかただけ 追記 へお進みください。
まずはフィード生成のための環境作り。
前述の通りDB(MySQL)でデータ管理を兼ねつつそのついでとしてのフィード生成を考えたいので、PHPとMySQLが使えるサーバは必須です。
わたしはローカルマシンでApache+MySQL+PHPを動かせる環境を作っているのでこれで万事OKなのですが、汎用性チェックのために今回は無料レンタルサーバで動かしてみることにしました。以下、そのレンタルサーバでの挙動を基本に記載します。
FC2カートだからFC2サーバ…と思わせて、FC2の無料HPはDBどころかPHPもCGIも使えないという無い無い尽くしサーバ(しかも有料版でさえPHPはモジュール版というもどかしさ)で、正直お話になりません。ここはひとつ、玄人向けの自由度の高さで中・上級者に絶大な支持を受け続けているXREAサーバを利用してみます。わたしももちろん数年来の愛用者です。
以下の記載もXREAサーバの挙動に合わせていますので、適宜読み替えてください。

【初期構築・1】
とりあえずDB側に、FC2カートからエクスポートしたデータをそのまま投入できるテーブルを2つ作成します。phpMyAdminが動くととても楽ちん。GUIばんざい。
テーブル作成-正常に実行されましたtm
商品データテーブルとカテゴリデータテーブルが必要になるので、今回はテーブル名を
mmnkr_items 、 mmnkr_cates としました。
テーブル作成のSQL文はこんな感じ

【初期構築・2】
FC2カートの管理画面→[ユーザー情報]→[インポート・エクスポート]から、「商品データ」と「カテゴリーデータ」のみチェックを入れてエクスポート実行。
FC2カートからデータをエクスポート。
これはxlsファイルでDLされるので、EXCELなりOpenOfficeなりで開いて、商品とカテゴリのシートをそれぞれCSV保存。
items.csv、cates.csvという感じのCSVファイルを2点作ります。(ファイル名は適当)

この2ファイルを、【初期構築・1】で作成した2つのテーブルにそれぞれインポート。
DBにインポートします

インポートが成功すると、テーブルの中身が商品データとカテゴリデータになります。(←当たり前)
インポートしました、tm

しかし一部このままだと不整合の起こるカラムがあるので、データ整形っぽいこんなSQLを4文ほど実行します。
データ整形っぽいSQLを4つ。

これでデータベース側の準備は終わり。

【初期構築・3】
さて、このDBからデータを呼び出してフィードを出力するPHPプログラムを設置します。
今回ざっくり書いてみたPHPはこんな感じ
(↑拡張子を .php に書き換えると一応使えます。文字コードはUTF-8(N))
このphpファイルをpublic_html以下の適当なディレクトリ(下の例では[mmnkr])にアップして、同じ階層に feed という新しいディレクトリを作成(パーミッションは777)。
ディレクトリには一応BASIC認証などかけておいた方がよいかもしれません。ついでにfeedディレクトリ内にはこんな感じの.htacessファイルを置いておくと後々便利かも。(なくてもいいです)
 [public_html]
   ├[mmnkr] 
     ├ feed-out.php
     └ [feed](777)
        └ .htaccess
あ、もちろんphpファイル内の設定事項(DBの接続情報(ユーザ名やパス、DB名)、FC2カートの情報(アカウントや画像収容サーバ名)など)はアップ前に書き換えておかないと意味無いですよ。

このファイル(ページ)に、ブラウザからアクセスします。
DBへの接続に成功していれば、こんな一覧ページが表示されるでしょう。→実際のページ見本。
上手く設置できると商品一覧が表示されます。

商品データの中から、フィード出力に必要な項目だけが抜き出されて全件表示されます。
画像URL(1枚目のみ)なども自動取得してるのですが、ここで商品データが出ているのに画像だけが表示されない場合には、a.) PHPファイル内の設定(FC2カートのアカウント・画像収容サーバ名)が間違っている または b.) カートに画像をアップロードしたのが2010年夏以前 のどちらかです。
FC2では内部仕様がこっそり変更されることがよくあり、アップしたファイルの画像名ルールも時期によって変わるのです。
(現在のファイル名ルールは「item_商品ID_画像番号.jpg」ですが、以前のルールは「商品ID_画像番号_謎の数字.jpg」でした)
PHPプログラム内では最新ルールのファイル名だけを取得するようにしてますので、古い登録画像は表示しません。
※この場合、FC2カート管理から該当商品の1枚目の画像だけを再アップロードすることで画像ファイル名が新ルールに入れ替わり、表示ができるようになります。

【初期構築・4】
一覧表示されている内容(個別商品URLなど)に問題がないことを確認しつつ、このページを最下部まで下りると、同時に出力されたフィードの本文と、フィードファイルへのリンクがあります。
フィード本文とファイルへのリンク
右下のリンクからフィードファイルをDL保存するもよし、テキストエリアに表示されてる本文をコピペして新しいファイルを作るもよし。(拡張子は .xml 、文字コードはUTF-8でないと登録エラーになります)
ふう、ようやくフィードファイルの出力にこぎつけましたー。

【初期構築・5】
ではこのフィードファイルをGoogleMerchantsにアップしましょう。
GoogleMerchantsへのアカウント登録・サイト認証は完了しているものとします)
これはGoogleMerchantsの指示に従えばいいので、FTPでも手動でもお好きな方法で。
今回は手動送信で行ってみます。
GoogleMerchantsに手動アップしてみる

フィードデータに問題がなければ数十分後には商品データが管理ページで表示可能になりますが、審査を通ってGoogleショッピングの検索対象になるまでは数日かかることもあるみたいです。気長に待つべしです。
GoogleMerchantsのフィード処理が完了した。

これで初回のフィード送信が完了ー!!

◆フィードの更新作業◆
フィードはできるだけ頻繁に更新すること、とされていますので、せっかく構築したDB環境を活かしてルーチンワーク化したいですね。
商品の追加頻度にもよりますけど、(商品に入れ替えがなかったとしても)最低でも4週間に1回。できれば2週に1回くらいは。
【ルーチンワークの手順】
[1] FC2カート管理画面から最新の商品データをエクスポート→DBにインポート
(【初期構築・2】でやったことそのまま。テーブル内容を新しいCSVで置き換える)
[2] フィードを出力
(【初期構築・4】と同じく、ブラウザでアクセスしてフィードファイルを保存)
[3] GoogleMerchantsにアップ
(【初期構築・5】と同じく、手動でもFTPでも)
…2回目以降の更新はこの3ステップだけで完了するので、毎回エクセルデータをいじくり回すよりはだいぶ楽になるのではないかなー。
[2]のPHPを書き換えてフィードファイルを同名上書きで保存するようにして、Merchantsのスケジュールオプションを設定すれば[3]が省略できて更に楽かも。

まだ「Googleショッピング」自体もサービス模索の端緒についたばかりという感じで、対応することでどの程度の効果が期待できるかはまったくの未知数…ですけれども、ゆるく見守っていきたい。

【柚香(ゆのか)】

【関連記事】 & 【TB】

COMMENT

【追記】商品画像URLがまた取得不可能に…
つい最近またFC2カートの中の人が商品画像登録システムをいじったらしく、2012年5月以降にアップした商品画像には
a1ed3583f00ae3ba071aa908a313f625.jpg
みたいなランダム文字列?のファイル名が生成されるようになり、画像URLの自動取得が不可能になりました。

は、腹立つ…。v-40
2012/05/23(水) 12:55:33 | URL | 柚香(本人) #k9MHGdfk [Edit

Comment Form







秘密にする(管理人のみ閲覧)
 

TRACKBACK






ブログ内検索

*緑と黄色だけのつなビィ*

*キティだらけのつなビィ*

リンク

  • 手作り市場あ~てぃすと 手作りSHOP・手作り趣味・手作り・クラフト系ブログの総合情報検索サイト
  • 雑貨ロボ

* 賛同リンク *


Copyright © モモノクラブログ All Rights Reserved.
Images from ふるるか ・・・ Designed by サリイ ・・・  まとめ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。