以前書いた記事「Excel 2013で追加された「WEBSERVICE」関数を使って、マクロを使わずWeb APIを利用する。」でExcel 2013で追加されたWeb関数を紹介しましたが、今回はそのWeb関数を使って複数のWeb APIを組み合わせて便利な機能を作り出す、所謂マッシュアップをしてみようと思います。
具体的には、Twitter APIとMextractr ネガポジAPIを組み合わせて、
“指定したTwitterユーザーのツイートがポジティブなのかネガティブなのかをExcelで判定する”
といったことをやってみたいと思います。
まずはTwitter APIを利用してツイートを取得する方法ですが、「Twitter API 仕様書」によると、
http://api.twitter.com/1/statuses/user_timeline/(ユーザーID).xml
で指定したユーザーのツイートを取得できるようです。
私(@kinuasa)のツイートを取得する場合は下記のような感じですね。
http://api.twitter.com/1/statuses/user_timeline/kinuasa.xml
このリクエストURLから得られる結果(XML)をWEBSERVICE関数で取得するには
とすれば良いのですが、結果の文字数が多すぎるとエラーになってしまうのでcountオプションを付けて取得する件数を指定することにします。
ユーザーIDは自由に入力できるようにしたいので、セル(B2)で指定します。
このXMLから目的の値を取得するにはFILTERXML関数を使って、XPath形式で指定します。
※ セルB4のXMLから目的の値(最初のツイート)を取得
WEBSERVICE関数とFILTERXML関数をまとめると下記のようになります。
これでTwitter APIを利用してツイートを取得できることが確認できました。
次はネガポジAPIの確認です。
このAPIを利用するにはAPIキーが必須になるので、利用登録フォームからメールアドレスを登録してAPIキーを取得します。
(※ メールアドレスを登録するとすぐに下記のようなメールが送られてきます。)
Mextractr APIキー発行お知らせメール
ご登録手続きありがとうございます。
次のAPIキーをご利用ください。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXなお、JSONP版ご利用時のURL登録の追加または変更をしたい場合は、
下記お問い合わせ先までご希望をお寄せください。
APIの使い方はMextractr ネガポジAPIにある通りで、
http://ap.mextractr.net/ma8/negaposi_analyzer?out=atom&apikey=xxxxx&text=(URLエンコードした文字列)
のようにapikeyパラメータにAPIキーを、textパラメータにURLエンコードした文字列を渡すだけです。
この結果をTwitter APIのようにWEBSERVICE関数を使って取得する場合は下記のようになります。
※ B2:APIキー , B3:対象文字列
FILTERXML関数でネガポジ度のみを取得する式は下記のようになります。
これで2つのAPIの動作確認ができたので、後は組み合わせるだけです。
セルB4:Twitter ユーザーID
セルC4:Mextractr APIキー
セルC7:
セルD7:
※ ファイルはコチラからダウンロードできます。
以上のように、Excel 2013ではWeb関数を利用することでマクロを使わずに簡単にマッシュアップすることができます。
ただし、WEBSERVICE関数の動作は非常に遅いため、Web APIを組み合わせれば組み合わせるほど結果を取得するまでに時間が掛かるようになりますので、その点だけは注意が必要です。
※ 計算方法が自動になっていると再計算処理にもかなりの時間が掛かるため、個人的には自動計算を切って必要な時だけ手動で計算することをお薦めします。
■ 関連Webページ
・Excel 2013で追加された「WEBSERVICE」関数を使って、マクロを使わずWeb APIを利用する。
//www.ka-net.org/blog/?p=1933
・[Excel 2013]Web関数を使ってXMLデータから複数のレコードをまとめて抽出する。
//www.ka-net.org/blog/?p=3266
この記事へのコメントはありません。