Chatwork - ユーザー一覧の取得
にメンテナンス済み
kintone の JavaScript カスタマイズから、Chatwork の API トークンを発行したユーザーのコンタクト一覧を取得する方法を紹介します。
事前準備
- Chatwork の API トークンを発行しておきます(Chatwork の「サービス連携」>「API」から発行できます)。
- API トークンをコードに直接書くと、kintone を閲覧できるユーザーに見えてしまいます。実運用では、プラグインの
kintone.plugin.app.setProxyConfigでトークンをプロキシ設定に保存し、kintone.plugin.app.proxyで呼び出す方法を検討してください。
使用したコード
(async () => {
const uri = 'https://api.chatwork.com/v2/contacts';
const header = {
'X-ChatWorkToken': 'ここに発行したAPIトークンを指定',
};
try {
const [body, status] = await kintone.proxy(uri, 'GET', header, {});
if (status !== 200) {
console.log('データを取得しましたが、エラーが返却されました。', status, body);
return;
}
const contacts = JSON.parse(body);
console.log('Chatworkからデータを取得しました。', contacts);
} catch (error) {
console.log('Chatworkからデータを取得できませんでした。', error);
}
})();
解説
GET /contacts は、API トークンを発行したユーザーのコンタクト(つながりのあるユーザー)一覧を返す Chatwork API です。kintone からは CORS の制約を回避するため、kintone.proxy を経由して呼び出します。
処理の順序
kintone.proxy は、コールバックを渡さない場合 Promise を返す非同期関数です。取得後の処理は await の後か then の中に書いてください。kintone.proxy の呼び出しの直後にそのまま処理を書くと、レスポンスが返る前に実行されてしまいます。
レスポンスの内容
kintone.proxy が返すデータは、次の 3 要素の配列です。
- HTTP ボディ(ほしいデータの部分、JSON 形式)
- HTTP ステータスコード(成功したかどうかの判定に使います)
- HTTP レスポンスヘッダー
HTTP ボディは JSON 文字列なので、JSON.parse で変換してください。以下は、parse 後の 1 件分のオブジェクトの例です。実際には、これがコンタクトの人数分入った配列になります。
{
"account_id": 123,
"room_id": 322,
"name": "John Smith",
"chatwork_id": "tarochatworkid",
"organization_id": 101,
"organization_name": "Hello Company",
"department": "Marketing",
"avatar_image_url": "https://example.com/abc.png"
}
エラーが発生した際の対処法
ステータスコードが 400 や 401 などの場合は、HTTP ボディにエラー内容が入っています。たとえば API トークンが不正な場合、ボディは次のようになります。
{
"errors": ["Invalid API token"]
}
正常時のステータスコードは 200 です。上記のコードのように、ステータスコードを数値で比較してから JSON.parse するのが安全です。
なお、Chatwork API にはレート制限(5 分間に 300 回)があります。短時間に繰り返し呼び出すと 429 エラーとなるため、レコード表示のたびに呼び出す実装は避けてください。
#JavaScript
#kintone