エクセルVBAでチャットワークAPIにリクエストを送る最も簡単なプログラム


request

photo credit: mikecogh Blanket Order via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAでチャットワークAPIを利用する…そんなこともできるんですね。

前回は以下の記事で、エクセルVBAでHTTPリクエストからHTMLドキュメントを生成する方法をお伝えしました。

エクセルVBAでIEを使わずにHTMLドキュメントを取得する方法
エクセルVBAでHTTPリクエストにより取得したHTML文字列から、HTMLドキュメントオブジェクトを生成する方法です。つまり、IEを使わずにHTMLドキュメントを取得することができるようになります。

さて、HTTPリクエストさえできれば、APIの利用ができるようになります。

例として、みんな大好きチャットワークAPIを使ってそのやり方を解説していきます。

ということで今回は、エクセルVBAでチャットワークAPIにリクエストを送る最も簡単なプログラムを紹介します。

では、行ってみましょう!

スポンサーリンク

前々回のおさらい

まずは、おさらいからです。

前々回のプログラムからスタートしたほうが良いので紹介します。

エクセルVBAでHTTPリクエストをする最も簡単なプログラム
今回はエクセルVBAでHTTPリクエストをする最も簡単なプログラムをお伝えします。HTTP通信、リクエストやレスポンスとは何か、またリクエストを送信して取り出すまでに必要なメソッドやプロパティを紹介します。

こちらです。

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にリクエストを送ることで、様々な操作を実現します。

https://api.chatwork.com/v2

それにより、メッセージを送受信したり、タスクを追加したり、いろいろな情報を取得したり、といったことが実現できます。

チャットワークから自分自身の情報を取得する

今回は、最も簡単な例として、チャットワークから自分自身の情報を取得することにしてみましょう。

その場合のエンドポイントは「/me」で、パラメータは不要です。

ですから、以下のようなURLになります。

https://api.chatwork.com/v2/me

チャットワークのAPIトークンを準備する

チャットワークAPIを使用する際には、それとは別にAPIトークンを準備する必要があります。

まず、チャットワークのプロフィールアイコンから「API設定」を選択します。

チャットワークでAPI設定を開く

「API Token」のページが開きますので、チャットワークのパスワードを入力して「表示」をします。

チャットワークAPIを取得するためにパスワードを入力する

すると、アルファベットと数字による文字列が表示されます。これがAPIトークンですので、コピーしておきましょう。

チャットワーク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メソッドを使います。

書式はコチラです。

IXMLHTTPRequestオブジェクト.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から自分自身の情報を取得

それっぽい情報が取得できていますが…どうなんでしょ。

ちょっとここからいろいろやるべき雰囲気がありますね。

まとめ

以上、エクセルVBAでチャットワークAPIにリクエストを送る最も簡単なプログラムについてお伝えしました。

  • チャットワークAPIとAPIトークンについて
  • setRequestHeaderでリクエストヘッダーをセットする

HTTPリクエストさえできれば、チャットワークAPIにリクエストを送る自体はさほど難しくないと思います。

次回はチャットワークにメッセージを送る、POSTリクエストの仕方について解説をします。

エクセルVBAでチャットワークに最もシンプルなメッセージを送る方法
エクセルVBAでチャットワークAPIを利用する方法をお伝えしております。POSTメソッドによるHTTPリクエストによりチャットワークにメッセージを送信する簡単なプログラムを紹介していきます。

どうぞお楽しみに!

連載目次:エクセルVBAでチャットワークAPIにリクエストする方法

エクセルVBAではIXMLHTTPRequestオブジェクトを使うことでHTTP通信を行うことができます。このシリーズではエクセルVBAからHTTPリクエストを行うことで、チャットワークAPIを活用する方法を紹介していきます。
  1. エクセルVBAでHTTPリクエストをする最も簡単なプログラム
  2. エクセルVBAでIEを使わずにHTMLドキュメントを取得する方法
  3. エクセルVBAでチャットワークAPIにリクエストを送る最も簡単なプログラム
  4. エクセルVBAでチャットワークに最もシンプルなメッセージを送る方法
  5. エクセルVBAでマクロの実行完了と処理時間をチャットワークに通知する方法

タイトルとURLをコピーしました