現役社内SEゆゆのExcelVBA覚書

現役社内SEがExcel VBAを中心に覚書として書いていくブログです。

【VBA】Amazon MWS APIを使って商品情報を取得するツールが完成しました

お盆休み中にたくさん時間があったので、Amazon MWS APIを使用してAmazonの商品情報の取得にチャレンジしてみました。

 

複雑で難しい、敷居が高い、というイメージがありましたが、そこまで難しいものでもありませんでした。

 

一度接続できてしまえば、後はもう簡単です。

Amazonが素晴らしいツールを提供してるので、これを使用すればパラメーターに迷うこともなくなるんじゃないでしょうか?

ぜひ使ってみてください。

mws.amazonservices.jp

 

 

私が今回製作したものはASINを元に、カート価格、商品情報(商品名、大きさ、重量、カテゴリ)、FBA手数料を取得することができます。

 

まあ某有料リサーチツールとほぼ同じものをExcel VBAで制作しました。 

現在月額で使用させていただいているのですが、自分で作って固定費を浮かそうかと思って・・・

 

ツール概要

今のところシートは3つ。

ASINシート

商品情報を取得するためのキーとなるASINを保持するシート。

Amazon商品ページからドラック&ドロップでASINを抜き出せるので、リサーチもできます。

f:id:yumeigunshi444:20190823234604p:plain

ASINを保持するシート

f:id:yumeigunshi444:20190823234513p:plain

ドラック&ドロップするとASINがリストに追加される

f:id:yumeigunshi444:20190823234303p:plain

ASINがリストに追加されていく


上記画像のようにAmazonの商品ページの画像をクリックし、ドラック&ドロップすることでASINを抽出できます。

 

実行ボタンで商品情報を取得

 

保存してASINをA列に追加し、実行してみます。

f:id:yumeigunshi444:20190823234657p:plain

先ほどの商品ページから3つのASINを対象に実行

結果はResultシートへ出力されます。

 

Resultシート

f:id:yumeigunshi444:20190823234834p:plain

実行終了後、取得したデータはこちらに

※ランキングの行はありますが、途中で必要ないかと思って取得していません。

 

こんな感じで商品情報、カート価格(なければ最低価格)、FBA手数料をMWS APIを使用して取得するようになっています。

 

私自身がアメリカのMWS APIの取得ができなかったので、日本のものだけ取得してくるようになっていますが、パラメータをちょっとアメリカ用に変えるだけで取得することができると思います。

 

MWSシート

こちらは接続に必要な出品者IDやアクセスキーを記載するシートです。

なので見せることはできませんw

Excelにベタ書きはちょっとアレだと思うので、ユーザーフォームにしてxmlで保存しておく方法に変更しようと思っています。

 

Excel VBAで制作するデメリット

しかし、Excel VBAの弱点としてExcel 2013以降の場合、VBA実行中に他のExcelファイルも使用不可になってしまいます・・・

MWS APIはリクエストできる数が時間で決まっているので、どうしても実行に時間がかかるツールになってしまいます。

 

Excelを別プロセスで起動することで回避できますが、ちょっと知識が必要になってしまうのはどうかと思ってしまいます。

(Altキーを押しながらExcel本体を起動)

 

なのでまたWindowsアプリケーションで作り直そうと思ってます。

一回作ってしまえば、他の言語で作るのもそんなに労力かからないと思ってます。

 

MWS APIに関する情報は少ないようなので、これから順番に記事にしていこうかなと思います!

 私が調べた感じでもFBA手数料の取得については本当に情報が少なかった・・・

 

しかもよく分からない不具合?があり、ASINを6つ以下の指定であれば情報が取得できるのですが、7つ以上になるとなぜか取得できなくなります。

現在Amazonに問い合わせ中ですが、未だに調査中で回答きてません・・・w

 

なので今は5個ずつ情報を取得しにいっていますが、多分最大の10個ずつやったほうが処理速度が早くなると思います。

 

まあこの話もFBA手数料の取得の仕方の記事で載せようと思います。

 

【2019/8/26 追記】

Amazonから回答がきて解決しました。

パラメータが長すぎてエラーにされていたようです。

GETでなくPOSTで送信で送信してください。とのことでした。

参考にしたサイトがどこもGET送信でやってて、POST送信のやり方が分からずちょっと苦労しました・・・

 

 

それではそれぞれの商品情報の取得についてはまた後日記事にします!