Ribbit.work

ExcelからChatworkのユーザ一覧を取得する

VBA

last modified date2021-9-3

publish date2021-9-3

ソースコード

' 送信先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

この記事を読んだ方におすすめの記事

Excel VBAの高速化はこれだけでOK!コピペで使えるコードを紹介
2021-9-3

Excel VBAの高速化はこれだけでOK!コピペで使えるコードを紹介

VBA
ExcelからChatworkにメッセージを送る
2021-9-3

ExcelからChatworkにメッセージを送る

VBA
VBAでマジックナンバーをスマートに消したい!
2021-9-1

VBAでマジックナンバーをスマートに消したい!

VBA
VBAでエラー処理とThrow処理を両方行う方法
2021-8-16

VBAでエラー処理とThrow処理を両方行う方法

ExcelVBA
【参照設定不要】Base64フォーマットにエンコードする
2021-8-16

【参照設定不要】Base64フォーマットにエンコードする

ExcelVBA

最新の記事

特定のHTML要素のclassListを全て削除(リセット)する方法
2021-10-14

特定のHTML要素のclassListを全て削除(リセット)する方法

JavaScript
KintoneからChatworkのユーザ一覧を取得する
2021-9-15

KintoneからChatworkのユーザ一覧を取得する

JavaScriptKintone
TypeScriptで楽天ブックス書籍検索APIを使う📚
2021-9-13

TypeScriptで楽天ブックス書籍検索APIを使う📚

TypeScriptJavaScript
【kintone】Webフォントを適用する
2021-9-8

【kintone】Webフォントを適用する

KintoneJavaScript
KintoneからChatworkにメッセージを送る
2021-9-6

KintoneからChatworkにメッセージを送る

JavaScript