みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAでチャットワークAPIを利用する…そんなこともできるんですね。
前回は以下の記事で、エクセルVBAでHTTPリクエストからHTMLドキュメントを生成する方法をお伝えしました。
さて、HTTPリクエストさえできれば、APIの利用ができるようになります。
例として、みんな大好きチャットワークAPIを使ってそのやり方を解説していきます。
ということで今回は、エクセルVBAでチャットワークAPIにリクエストを送る最も簡単なプログラムを紹介します。
では、行ってみましょう!
前々回のおさらい
まずは、おさらいからです。
前々回のプログラムからスタートしたほうが良いので紹介します。
こちらです。
Sub HTTPリクエスト()
Dim httpReq As XMLHTTP60
Set httpReq = New XMLHTTP60
httpReq.Open "GET", "https://tonari-it.com/"
httpReq.Send
Do While httpReq.readyState < 4
DoEvents
Loop
Debug.Print httpReq.responseText
Set httpReq = Nothing
End Sub
生成したIXMLHTTPRequestオブジェクトを、OpenメソッドでメソッドGETとURLをセット、そしてSendメソッドでリクエスト送信です。
受け取ったレスポンスからresponseTextプロパティで内容をテキストとして取り出して、絵バッグプリングしています。
このプログラムでは、指定したURLにリクエストをしてHTMLドキュメントを取得してテキストとして出力するものでしたが、今回はチャットワークAPIにリクエストをしてみたいと思います。
チャットワークAPIへのアクセスの仕方
チャットワークAPIでは、以下をベースとして、エンドポイントという文字列と、パラメータを付与したURLにリクエストを送ることで、様々な操作を実現します。
それにより、メッセージを送受信したり、タスクを追加したり、いろいろな情報を取得したり、といったことが実現できます。
チャットワークから自分自身の情報を取得する
今回は、最も簡単な例として、チャットワークから自分自身の情報を取得することにしてみましょう。
その場合のエンドポイントは「/me」で、パラメータは不要です。
ですから、以下のようなURLになります。
チャットワークのAPIトークンを準備する
チャットワークAPIを使用する際には、それとは別にAPIトークンを準備する必要があります。
まず、チャットワークのプロフィールアイコンから「API設定」を選択します。
「API Token」のページが開きますので、チャットワークのパスワードを入力して「表示」をします。
すると、アルファベットと数字による文字列が表示されます。これがAPIトークンですので、コピーしておきましょう。
これで準備は完了です。
エクセルVBAでチャットワークAPIにリクエストを送る
では、プログラムを作っていきます。
流れは冒頭で紹介したプログラムを流用できますので、必要なところだけ変更していきましょう。
リクエストの初期化
Openメソッドでリクエストの初期化をする処理ですが、自分自身の情報を得る場合は
- メソッド:GET
- URL:https://api.chatwork.com/v2/me
ですので、以下のようになります。
http.Open "GET", "https://api.chatwork.com/v2/me"
APIトークンをヘッダーに追加
チャットワークAPIを使う場合は、ヘッダーの「X-ChatWorkToken」というヘッダー名で先ほど取得したAPIトークンをセットをする必要があります。
エクセルVBAでHTTPリクエストにヘッダーをセットするメソッドがありまして、setRequestHeaderメソッドを使います。
書式はコチラです。
ですから、以下の一文を追加することになります。
http.setRequestHeader "X-ChatWorkToken", "xxxxx取得したAPIトークンxxxxx"
チャットワークAPIへのリクエストをするプログラム
以上をまとめると以下のプログラムになります。
Sub チャットワークにHTTPリクエスト()
Dim httpReq As XMLHTTP60
Set httpReq = New XMLHTTP60
With httpReq
.Open "GET", "https://api.chatwork.com/v2/me"
.setRequestHeader "X-ChatWorkToken", "xxxxx取得したAPIトークンxxxxx"
.Send
Do While .readyState < 4
DoEvents
Loop
Debug.Print .responseText
End With
Set httpReq = Nothing
End Sub
では、実行してみましょう。
イミディエイトウィンドウに以下のように出力がされます。
それっぽい情報が取得できていますが…どうなんでしょ。
ちょっとここからいろいろやるべき雰囲気がありますね。
まとめ
以上、エクセルVBAでチャットワークAPIにリクエストを送る最も簡単なプログラムについてお伝えしました。
- チャットワークAPIとAPIトークンについて
- setRequestHeaderでリクエストヘッダーをセットする
HTTPリクエストさえできれば、チャットワークAPIにリクエストを送る自体はさほど難しくないと思います。
次回はチャットワークにメッセージを送る、POSTリクエストの仕方について解説をします。
どうぞお楽しみに!