TROCCOでChatworkのデータを転送してみた

# ✨️TROCCOでChatworkのデータを抽出・転送できるようになりました！


# Chatworkとは？

Chatworkは日本で開発されたツールであり、日本語でのサポートが充実しています。
シンプルなインターフェースで、ITリテラシーが高くないユーザーでも直感的に操作できるのが特徴です。
チャット機能と連携したタスク管理機能が備わっており、メッセージとタスクを同一画面で管理できるのもポイントです💡
※どうでも良い話ですが、私が社会人になって初めて使ったチャットツールはChatworkでした。

https://go.chatwork.com/ja/


# TROCCOとは?
TROCCOは、データの連携・変換をスムーズに実現するクラウド型データ統合ツールです。
執筆者はTROCCOのカスタマーサクセスエンジニアをしています。

https://trocco.io/



# :satellite_orbital:　TROCCOで取得できるChatworkのデータ一覧（2025/03現在）

| 取得対象 | APIエンドポイント | 説明 | データ利活用アイデア |
|---|---|---|---|
| コンタクト情報 | [https://api.chatwork.com/v2/contacts](https://developer.chatwork.com/reference/get-contacts) | コンタクトのID、名前、アカウントID、組織ID、部署、役職、アバター画像URLなどを取得 | 社員名簿の作成、アクセス権管理、コミュニケーション分析 | 
| チャットルーム一覧 | [https://api.chatwork.com/v2/rooms](https://developer.chatwork.com/reference/get-rooms) | ルームID、ルーム名、ルームタイプ、ルームアイコンURL、更新日時などを取得 | プロジェクト管理ダッシュボード、情報共有状況の可視化、アーカイブ管理、新規メンバーへの情報提供 | 
| チャットルーム詳細 | [https://api.chatwork.com/v2/rooms/{room_id}](https://developer.chatwork.com/reference/get-rooms-room_id) | ルームID、ルーム名、ルームタイプ、ルーム説明、参加メンバー数、管理者アカウントIDなどを取得 | ルーム情報の集約、新設ルームの管理、ルーム利用状況の分析 |
| チャットルームのメンバー一覧 | [https://api.chatwork.com/v2/rooms/{room_id}/members](https://developer.chatwork.com/reference/get-rooms-room_id-members) | アカウントID、役職、ロールなどを取得 | プロジェクトチーム管理、権限管理の自動化、組織変更への対応 | 
| チャットルームのタスク一覧 | [https://api.chatwork.com/v2/rooms/{room_id}/tasks](https://developer.chatwork.com/reference/get-rooms-room_id-tasks) | タスクID、ルームID、担当者アカウントID、内容、状態、期限、作成者アカウントIDなどを取得 | タスク管理ツールとの連携、進捗状況の可視化、担当者別タスク管理、レポート作成の自動化 | 

# TROCCOで連携してみた

## 【Chatwork】アクセストークンの取得
Chatworkにログインし、以下のURLからアクセストークンを取得します。

https://www.chatwork.com/service/packages/chatwork/subpackages/api/token.php

APIの利用は、権限が必要になります！管理者さんに相談しておきましょう。

## 【TROCCO】接続情報の作成

接続情報を作成します。
アクセストークンをペーストして保存するだけです。

https://trocco.io/connections/chatwork/new

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/47b7b69d-459b-4c28-b779-9e3452a582e2.png)



## 【TROCCO】転送設定の作成

転送元Chatworkの設定としては、先程作成した接続情報と、取得対象を選択するだけです。
手始めに、チャットルーム一覧を取得してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/70186f30-8917-4e92-bedf-d247c269998a.png)


今回、転送先はスプレッドシートにしてみました。
## 【TROCCO】プレビューの確認・転送の実行

データが取得できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/22781734-5f24-4900-b550-59563678bf41.png)

スプレッドシートに転送した結果がこちら⏬️
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/8680eff2-25f4-498a-95ad-2563a8472a8a.png)

チャットルーム一覧から、未読数（`unread_num`）、メンションの数（`mention_num`）、タスクの数（`mytask_num`）が取得できるのは面白いですね。
ただし、取得できるのは「自分の」数なので、アカウントで認証しているユーザーに情報が紐づく点は注意です。

https://developer.chatwork.com/reference/get-rooms

コンサルさんなどは案件ごとにチャットツールを使い分けている方も多いと思います。メッセージの見落とし防止の仕組みやダッシュボードなどを作れそうですね。


同じような手順で、タスク一覧も抽出してみました⏬️
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/9def9431-5cf4-45f6-b5b9-e99aef0461e4.png)

期限（`limit_time`）はUNIXTIME（秒）で返されるため、TROCCO上でUNIX時間変換をかけてあげるとよさそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/12e25a07-c49d-46c6-9963-9c3778c25ca1.png)

変換して出力すると、こんな感じに⏬️
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/f7657e80-69b4-4225-997d-34a05b121966.png)

また、`message_id`と`room_id`を用いて、以下のURLを作成するとこで、該当するメッセージに遷移する事ができるようです💡
`https://www.chatwork.com/#!rid{room_id}-{message_id}`


# ユースケース考えてみた:ユーザー管理

例えば、社員一覧をスプレッドシートに管理されているとします。
退職者や部署異動が発生した時に、Chatwork上のアカウントを整理したい…
そんな場面で、TROCCOを用いて、Chatworkからスプレッドシートに転送する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/9d0bb84f-d451-4cad-8fac-e41ee6677a12.png)

このシートを社員一覧のシートと突合。なんてことができると、退職者発生時のアカウント削除や、日々の棚卸しのためのアカウント特定作業が捗りますね。

また、月1でChatworkからデータを転送するとして、転送処理が終わったタイミングで通知をするように設定。（これはTROCCOの通常機能でできます）
そうすることで、月1の作業を忘れずに、かつ効率化できるかなと思いました！

ただし2点注意点があります。

### 1点目 ▶ チャットルームのIDを事前に知っておく必要がある
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/58c5bef6-94ae-4756-8e0f-3587dade5751.png)
TROCCOを使って解消するなら、チャットルーム一覧の情報を取得しておいて、その後[カスタム変数のループ実行](https://documents.trocco.io/docs/loop-using-custom-variables)と組み合わせが良さそうです。

### 2点目 ▶ メンバーの表示名しか取れない

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/9d0bb84f-d451-4cad-8fac-e41ee6677a12.png)

https://developer.chatwork.com/reference/get-rooms-room_id-members

ニックネームなどつけられてしまうと、特定作業が少し大変かも。
データ連携を考えるなら、Chatwork上の名前には命名規則を用意しておいたほうが良いかもしれません。


# おわり
いかがでしたでしょうか。
この記事を見てくださった方の、なにか少しでもお役に立てていたらならば幸いです🙏