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 要素の配列です。

  1. HTTP ボディ(ほしいデータの部分、JSON 形式)
  2. HTTP ステータスコード(成功したかどうかの判定に使います)
  3. 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