FMEでEC-CUBEの受注データを取得してみる−1
プラグマティカ社の飯嶋社長監修の元、SAFE SOFTWARE社のFME(2015.0)よりEC-CUBEの受注データを取得するためのワークスペースを作成したので、その内容を解説する。
ワークスペース上のロガーは動作確認のために使用している。動作確認しながら試してみる場合はロガーも含めて入力してみて欲しい。
基本的な考え方として、HTTPCallerを使用してWEBサイトへアクセスするが、管理画面のログインをパスするために、いくつか手順を踏む必要がある。
1.ログイン画面へアクセス
2.アクセス結果からtransactionidを取得
3.ログイン画面へ、transactionidとuser_id、passwordをパラメータとして渡し、POSTする
4.CSV出力のURLへ、transactionidをパラメータとして渡し、POSTする
5.アクセス結果がCSVになっているので、ファイルへ出力
これで、ブラウザから管理画面を操作することなく受注情報をダウンロードできる。
1.ログイン画面へアクセス
何もないところからいきなりスタートできないので、一番最初はCreatorを配置する。
管理画面トップのURLをhttps://から指定し、HTTPCallerでアクセスする。
初回なので、特にパラメータを渡すことなくGETでアクセスする。
ここを含め、以降全てのHTTPCallerで「Save Cookies」を「Yes」にしておく必要がある。
2.アクセス結果からtransactionidを取得
1の戻りでログイン画面のHTMLが返ってくる。
その中に、「transactionid」がある。
以後、この値を使用してセッションを維持する必要があるため、内部のパラメータとして保持する。
具体的には、HTML中より「transactionid」を取得して保持するため、今回は「StringSearcher」を使用し、正規表現から「transactionid」のvalueを取得した。その際の正規表現は以下の通り。
<input type="hidden" name="transactionid" value="([^¥"]+)"
マッチした文字列が「Matched Parts Attribute」で指定したアトリビュートへ保存される。
3.ログイン画面へ、transactionidとuser_id、passwordをパラメータとして渡し、POSTする
ログイン画面へPOSTのリクエストを送る。
「HTTPCaller」を使用し、POSTのリクエストを組み立る。
「Save Cookies」をYesにしておくと、セッションを維持したアクセスが実現できる。
formのフィールドとして、login_id、password、mode、transactionidを渡す。
4.CSV出力のURLへ、transactionidをパラメータとして渡し、POSTする
「Save Cookies」をYesにしておくことで、セッションが維持されていることを期待できるので、
管理画面が開けていることを前提にCSV出力のURLへアクセスする。
今回は受注データを取得するので、URLは受注データの一覧画面となる。
EC-CUBEのインストールされている環境によりURLは変わるが、今回は管理画面を「admin」で始まるディレクトリにインストールしたことを前提に、「https://〜/admin/order/?」とアクセスする。
EC-CUBEの場合、URLの?の後ろに検索条件を加えることもできるが、今回は絞り込むことなくCSVを取得できることを確認する。
5.アクセス結果がCSVになっているので、ファイルへ出力
前項の設定で、Output Filenameが設定されている。
受信したCSVデータはOutput Filenameで指定されたファイルとしてローカルに保存される。
おわりに
ここまでで、HTTPCallerを使用し、WEBサイトへログインしてから特定のページへアクセスすることができるようになる。
ID、Password、URLは伏せ字にしてあるので各人の環境に合わせて入力して欲しい。
この例を参考にしたとき、入力されたIDやPasswordはFMWファイル中に暗号化されずに保存されるので、セキュリティの確保されていないところで使用しないで欲しい。
デスクトップからの操作で同様の操作を行いたい場合は、画面からID、Passwordを入力するようにするなどして、ID、Passwordを安全に扱えるようにして欲しい。
次回以降で、ダイアログからID、Passwordを入力する方法と、読み取ったCSVファイルを別フォーマットへ変換して保存する方法を記載する。