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 を使う方法がいいかと思います。

VBA-tools/VBA-JSON

上記のサイトから.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