Ribbit's works

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

#JavaScript #kintone
にメンテナンス済み
記事のトップ画像

API トークンを発行したユーザのコンタクトとなっているユーザ一覧を取得します。

使用したコード

(async () => {
  const uri = 'https://api.chatwork.com/v2/contacts';

  const header = {
    'X-ChatWorkToken': 'ここに発行したAPIトークンを指定',
  };

  try {
    const response = await kintone.proxy(uri, 'GET', header, '');
    console.log('Chatworkからデータを取得しました。', response);
  } catch (error) {
    console.log('Chatworkからデータを取得できませんでした。', error);
  }
})();

解説

処理の順序

kintone.proxy の返り値は Promise オブジェクトなので、then、catch の中のコードは非同期で処理されます。上記のコードの下に、取得後を想定したコードを記述すると、思ったように動作しないケースがあるので、取得後の処理は then の中に書いてください。

レスポンスの内容

Chatwork から受け取るデータ(上記コードの response の部分)は、配列で取得されます

  1. HTTP ボディ(ほしいデータの部分、JSON 形式)
  2. HTTP ヘッダー(受信に成功したかどうかなどのステータスコード
  3. ゲートウェイ情報(基本的には使いません。Chatwork は Amazon のゲートウェイを利用しているため、その情報が取得されます)

また、HTTP ボディは JSON 形式となっているので、JSON.parse をかませてやる必要があります。以下は、今回のケースの、parse 後のオブジェクト内容の例です。

{
	"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"
}

エラーが発生した際の対処法

HTTP ヘッダーが’400’や’401’など、エラーが発生している場合。HTTP ボディは以下のようになります。

{
  "errors": ["Invalid API token"]
}

正常終了した場合の HTTP ヘッダーは’200’ですので、正常終了した場合のみ処理をしたい場合は、以下のようなエラーチェックを入れた方が良いかもしれません。

if (response[1] !== '200') {
  console.log('データを取得しましたが、エラーが返却されました。', response[1]);
  return;
}