Webサービスやアプリを開発して運営するのが趣味です。



ChatWork のログを Slack 形式でエクスポートするツール

2016年12月03日 23:10

https://github.com/kkosuge/chatwork_to_slack

ChatWork のデータをエクスポートして Slack にインポートできる形にするツールを作りました。[code] を Markdown に、[To] を @ に、(beer) を :beer: に変換します。

対象

chatwork.com (KDDIではない)で使えます。9月後半あたりにログのエクスポート機能が付いたエンタープライズプランというのが始まったみたいですが、それ以前のビジネスプランなどでは依然としてエクスポートする手段が提供されておらず、仕方がないのでスクレイピングでデータをぶっこ抜くというのがこのツールに限らず常套手段となっているようです。

使い方

Ruby 製のツールです。gem コマンドでインストールします。

gem install chatwork_to_slack

ユーザーのマッピングを定義するテンプレートを作成するコマンドです。chatwork_api_key の部分には ChatWork の API キーを入れます。後述の users.csv を手動で作成するのであればこのコマンドは必要ありません。

chatwork_to_slack --generate-template -k chatwork_api_key

ChatWork のコンタクトからユーザーデータを取ってきて、users.csv というファイルが作成されます。slack_name のところが不完全になっているのがほとんどだろうと思いますので、そちらを書き換えます。

chatwork_account_id,chatwork_name,slack_name
1820581,中村 浩一,nakamura
2222222,石井 太郎,ishii

users.csv の置いてあるディレクトリでメールアドレスなどの引数を加えてエクスポートを実行します。 chatwork_room_id はルームURL https://www.chatwork.com/#!rid12345 であるところの 12345 です。

chatwork_to_slack -i example@example.co.jp -p your_password -x chatwork_room_id -c slack_channel_name

slack_channel_name.csv が作成されますので、それを https://my.slack.com/services/import/csv からポチポチやればインポート完了です。インポート機能がとても良く作り込まれており(ロールバックとかもできる)やはり Slack に来てよかったと、そういう気持ちになります。

ファイルについて

ChatWork にアップロードされているファイルもすべてダウンロードされますが、CSV形式でのSlackエクスポートではファイルを含めることができません。そのため、私が行ったところによれば zip で固めて各チャンネルにアップロードするという運用が行われました。

Special Thanks

ログの取得には goodbye_chatwork を使用しています。
https://github.com/swdyh/goodbye_chatwork