Chatwork - ユーザー一覧の取得
にメンテナンス済み
ソースコード
' 送信先URI
Private Const END_POINT As String = "https://api.chatwork.com/v2/"
' 使用するAPIトークン
Private Const API_TOKEN As String = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Public Function Api(ByRef method As String, ByRef url As String, ByRef param As String) As String
Dim httpRequest As Object
Set httpRequest = CreateObject("MSXML2.XMLHTTP")
With httpRequest
Call .Open(method, END_POINT & url, False)
If method = "POST" Or method = "PUT" Then
Call .setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
End If
Call .setRequestHeader("X-ChatWorkToken", API_TOKEN)
Call .send(param)
Api = .responseText
End With
End Function
API_TOKEN の部分に利用するユーザの API トークンを貼り付けてください。API トークン(使用ユーザ)も動的にしたい場合は、ファンクションを以下のようにすると良いかと思います。
Public Function Api( _
ByRef method As String, _
ByRef url As String, _
ByRef param As String, _
Optional ByRef apiToken As String = API_TOKEN) As String
後は、上記のファンクションを以下のように呼び出すだけで取得できます。
Dim contacts As String
contacts = Api("GET", "contacts", "")
呼び出しを更に簡易化させたい場合は、もう一つファンクションをかませましょう。
Public Function GetContacts() As String
GetContacts = Api("GET", "contacts", "")
End Function
レスポンスの整形
取得は完了しましたが、取得されるデータは String 形式の json ファイルです。Excel は XML のパースはできますが、json とは相性が悪いので、受け取ったファイルを自力で解析しないといけません。オススメの対処法は、GitHub に公開されている、JSON Converter を使う方法がいいかと思います。
上記のサイトから.bas ファイルをダウンロードし、VBE からインポートしましょう。後はモジュールを利用し、データをイテレータで取得するだけです。
Dim records As Object, record As Object
Set records = JsonConverter.ParseJson(response)
For Each record In records
record("account_id") ' → 対象アカウントID
record("room_id") ' → 対象アカウントとのルームID
record("name") ' → 対象アカウントの表示名
record("avatar_image_url") ' → 対象アカウントのアイコン
Next
よく使うパラメータは上記ぐらいでしょうか。他に取得されるパラメータが知りたい方は、Chatwork が公開しているドキュメントを参照してください。
Chatwork API ドキュメント - エンドポイント: /contacts
#VBA