はじめに
今回は、「楽天Webサービス」の書籍APIを利用して、書籍情報を検索して取得する方法を紹介します。こういった検索はブラウザでもできますが、Web APIを利用すると、もっときめ細かい、自分好みの検索が可能になります。本例では、書籍のタイトル、著者などによる複合検索をするVBAを作成します。動作確認は、Windows 7、Excel 2010、VBA 7.0およびWindows XP、Excel 2007、VBA 6.5で行っています。
Excel VBAでWebサービス - 天気予報を取得してみよう
Excel VBAでWebサービス - MSNマネーから株価の推移を取得しよう
楽天デベロッパーIDの取得
楽天WebサービスのAPIを利用するには、「デベロッパーID」が必要です。まず、以下のURLで楽天Webサービスのサイトへアクセスします。
楽天Webサービス
http://webservice.rakuten.co.jp/
図2の左側にある「デベロッパーIDを取得」リンクをクリックすると、図3のようなページが表示されます。
楽天会員のユーザIDをすでに持っている方はログインし、指示に従ってデベロッパーIDを取得してください。未登録の方は、「楽天会員に新規登録(無料)」ボタンをクリックし会員登録してから、ログインしてください。
書籍検索の開発
Excel 2010を起動した後、以下の手順で行います。
- XMLデータを取り込み、ワークシートに対応付ける
- 検索するための部品を作成する
- 検索条件から検索結果を表示するVBAを実装する
XMLデータを取り込み、ワークシートに対応付ける
XMLデータの取得はVBAで行いますが、ワークシート上への配置は、Excelの機能を利用します(図4)。
この操作の目的は、その「対応ルール」を作成することにあります。そのため、単行本だけを検索するURLを組み立て、一旦データを空読みします。楽天Webサービスの書籍APIで今回使う入力パラメーターを表1に示します。
楽天Webサービスの書籍APIで今回使う入力パラメーター
項目名 | パラメーター名 | データ型 | 既定値 | 備考 |
---|---|---|---|---|
デベロッパーID | developerId | String | なし | 取得した文字列を設定する |
操作 | operation | String | なし | 書籍検索の場合は「BooksBookSearch」固定 |
バージョン | version | String | なし | Web APIのバージョン。「2011-01-27」固定 |
書籍のサイズ | size | Integer | 0 | 0:全て、1:単行本、2:文庫、3:新書など |
書籍タイトル | title | String | なし | 書籍のタイトルから検索 |
著者名 | author | String | なし | 著書名から検索 |
出版社名 | publisherName | String | なし | 出版社名から検索 |
書籍コード | isbn | Long | なし | ISBNコードから検索 |
Web APIでは、URLに引数(パラメーター)を以下の形で付加する必要があります。
パス名?引数1=値&引数2=値&・・・&引数n=値
今回の例では、以下のようになります(【デベロッパーID】の部分は、取得したデベロッパーIDの文字列に置き換えてください)。
http://api.rakuten.co.jp/rws/3.0/rest?developerId=【デベロッパーID】&operation=BooksBookSearch&version=2011-01-27&size=1
[開発]タブの[ソース]をクリックすると、[XMLソース]ウィンドウが右側に開きます。右下にある[XML対応付け]ボタンをクリックしてダイアログを開き、[追加]ボタンをクリック、[XMLソースの選択]では、[ファイル名]欄に、上記のURLを入力してください(図5)。
[開く]をクリックすると、「指定したXMLソースはスキーマを参照していません。」という警告が表示されますが、そのまま[OK]をクリックしてください。[XMLの対応付け]の一覧に「Response_対応付け」が追加されますので、[OK]ボタンをクリックすると、[XMLソース]ウィンドウにデータ項目がツリー表示されます。
楽天Webサービスの書籍APIで今回使う出力パラメーターを表2に示します。
楽天Webサービスの書籍APIで今回使う出力パラメーター
項目名 | パラメーター名 |
---|---|
書籍タイトル | title |
著者名 | author |
出版社名 | publisherName |
商品説明文 | itemCaption |
税込み販売価格 | itemPrice |
[XMLソース]ウィンドウの項目から、[Response]-[Body]-[ns2:BooksBookSearch]-[Items]-[Item]配下にある[title]、[author]、[publisherName]、[itemPrice]、[itemCaption]をワークシート上にドラッグ&ドロップします(図6)。