Help us understand the problem. What is going on with this article?

コンソールを使って指定のチャットワーク部屋のメッセージをすべて取得する。

これはなに?

チャットワークの部屋のログをすべて取得できるスクリプトの紹介です。

モチベーション

チャットワークのログをテキストデータとして取得できないかという相談がありました。

チャットワークの API だと最新100件までしか取得できないため、なんとかできないか試行錯誤しました。
https://developer.chatwork.com/ja/endpoint_rooms.html#GET-rooms-room_id-messages

同じ目的のものとして goodbye_chatwork があったが、自分のログイン方法が SSO だったためか、reCAPTCHA の影響か 、直接は利用できなかった。スクリプトを参考にした。

スクリプトは?

以下の gist に上げています。

コンソールを使って指定のチャットワーク部屋のメッセージをすべて取得する。
https://gist.github.com/junjanjon/8ce62c1cb90e817b1247de672bf93116

以下の3行だけ書き換えればどの部屋でも利用できます。

// 取得したいチャットルームの最新のチャット ID
var target_chat_id = 1274532567885807616;
// 取得したいチャットルームのルーム ID
var target_room_id = 12345678;
// 最大再帰回数. 本番時は 10000 程度を指定してください.
var LIMIT_COUNT = 3;

どうやって使うの?

Google Chrome のデベロッパーツールの中の機能、コンソールを利用します。ほかのブラウザにも同等の機能があるので読み替えてください。

image1.png

image2.png

約 400 件のメッセージごとに1秒かかるようにしています。

どんな結果が来るの?

コンソールにすべてのメッセージがテキストとして出力されます。コピーボタンをクリックすればコピーできます。

image3.png

実績は?

約3万件のメッセージがある bot 部屋(ニュースを流し続けていた部屋)のログをすべて収集できました。テキストで約 60[MB] でしたが、問題なくテキストエディタへコピペできました。

参考

ChatWorkからファイルも含めてログをエクスポートしたいならgoodbye_chatworkだ!KDDI ChatWork対応
https://qiita.com/hirokishirai/items/29bfdfc6d61b911aacc1

drecom-inc
Drecom with entertainment として発明を産み続け、人々の期待を超えるサービスを提供することを目的とした会社です。
https://www.drecom.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away