無料版Slackが9/1より90日前投稿が見れなくなるので、メッセージ保存ツールを個人開発してみた

2022年7月19日にSlackが発表した、プロプランの値上げとフリープランの内容変更は大きな衝撃を与えました。

特に、後者の無料版Slackのメッセージ上限が、1万通→過去90日以内に変更することに悲しみにくれるユーザーも出てきています。

そこで、Slackのメッセージ保管・退避ツールを個人開発してみました。

# Slackがフリープラン改定の衝撃発表

Slackの公式サイトで2022年7月19日にユーザーを震撼させるお知らせがありました。
プロプラン(有料版)の値上げとフリープラン(無料版)の内容変更です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/f9220b44-d5f3-d85d-2fbe-f1ca16f1d77f.png)
多くのメディアでも取り上げられましたが、**影響範囲が大きいのが後者**です。

これまでフリープランでは1万メッセージが上限でそれを超えた投稿が表示されなくなる仕様でした。

しかし、**2022年9月1日より投稿してから90日が経過したメッセージが非表示になる仕様**に変更されます。

# 1万メッセージ→過去90日変更で困るユーザー

今回の変更で恩恵を受けるユーザーは非常に少なく、活発に無料版Slackを利用している大規模な組織ぐらいです。

小規模なグループで利用していたケースでは、1万メッセージを超えるまでに90日よりも長期間かかることが多いです。

それこそ1年前のメッセージでも閲覧できる状態のSlackワークスペースも多数あります。

そうした小規模なチームでのSlack利用や、プロジェクト単位で利用していた場合に、改悪と言えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/3e4aa34e-81cd-b82c-9cf1-2ff763c742e4.png)
ただ、今回の変更はSlackの経営判断のため、無料版を利用しているユーザーは受け入れる必要があります。

**Slackはチャットツールでフロー情報を扱うため、「本来90日以上の投稿を見返さない」があるべき姿です。**
(あとから参照すべき情報はストック情報として、別の管理ツールで記録)

# Slack公式のエクスポート機能も面倒

ただ、そうは言っても、**「あれ、あの時Slackでのやり取りってどんな内容だったっけ？」** と見返すことは往々にしてあります。

そのため、9月1日までに5月以前の投稿が見れるように投稿データを取得しておきたいところです。

Slackにはエクスポート機能も用意されていて、ワークスペース内のパブリックチャンネルに投稿メッセージを出力できます。
![Snipaste_2022-07-24_09-32-54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/3898891b-87d3-72ef-5cda-d3cbee60fceb.png)
ただ、出力されるファイル形式がJSONかつ、Windowsだとファイル名に日本語があると文字化けします。
![Snipaste_2022-07-24_11-00-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/29aaf531-7ae2-1318-40d9-9ef449e63595.png)
さらにチャンネルのメッセージは日付単位でファイルが生成されるので、閲覧がめちゃくちゃ面倒です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/7227182c-a34b-d438-4161-eafb57d26fe3.png)
# そこでSlackメッセージ保存・退避ツールを個人開発

**「9/1に備えてSlack無料版に投稿したメッセージを保存したい、でも公式エクスポートは使いづらい」**

という人に向けて、スプレッドシートで使えるSlackメッセージ保存・退避ツールを個人開発しました。
![Snipaste_2022-07-26_12-51-33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/ba18ed6b-96a3-8f88-d189-caddbe99dffd.png)

* 1万メッセージ上限で過去にチャンネルに投稿されたメッセージを取得
* チャンネル通常表示のメッセージに加え、スレッド返信も取得可能
* 投稿者やメンションはユーザーIDではなく、ユーザー名に置換表示
* 定期実行で新しい投稿についても一定間隔で実行して取得可能

Slack APIでアプリを作成し、トークンを発行すれば利用することができます。

ツールはスプレッドシートで構成されており、プログラムはGoogle App Script(GAS)で作成しました。

GASからSlack APIで以下のリクエストを行い情報を集める仕組みです。

* users.list
* conversations.list
* conversations.history
* conversations.replies

**注意点：GASでSlackAPIを利用する際によく使うライブラリ「SlackApp」にはconversation系のメソッドが実行できません**

# Slackメッセージ保存・退避ツールの使い方

Slack APIのトークンをC1セルに入力し、「Slack情報取得」ボタンをクリックします。
![20220723_auto_001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/9f2acfd4-514b-8dfc-8e18-2db30f67d7cc.jpeg)
すると、Slackワークスペースのユーザー情報やパブリックチャンネルの情報を取得してくれます。
![20220723_auto_002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/4e3c2166-6ba5-c22f-79fd-74b2f469d3b6.jpeg)
※SlackAPIで作成したアプリがチャンネルに追加されているかどうかもチェック可能です。
Slack情報取得時にワークスペース内にあるパブリックチャンネル名のシートが生成されます。
各シートで「メッセージ取得」ボタンをクリックすると、過去に投稿したメッセージを取得できます。
![20220723_auto_003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/829691a9-dd2c-a8d0-a7cb-bf0b21c53996.jpeg)
通常のチャンネルに投稿されたメッセージと、メッセージへのスレッド返信したものも取得します。
1度のメッセージ取得は200通が上限で、それ以上ある場合、「メッセージ取得」を複数回実行するか、「全投稿取得」を使うと、トリガー登録して、繰り返し実行してくれます。
※メッセージ取得完了すると、トリガー登録を自動解除します。

新しく投稿されたメッセージも自動でツールに保存したい場合は、設定シートで「定期取得対象」をONにすると、週次で新しく投稿されたメッセージを取得してくれます。
![20220723_auto_004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365005/03b6d065-1aeb-df32-88bc-b68077d89398.jpeg)
この定期実行を有効にすれば、過去メッセージを退避させるだけでなく、新しいメッセージも蓄積可能です。

それによって、過去90日以前の投稿が見れなくなるという制約から解放されます。

※事前に必要となるのはSlack APIでのアプリ作成とトークン取得方法は以下の記事で解説しています。

https://auto-worker.com/blog/?p=6184


# ツール解説の動画も掲載

Slackメッセージ保存・退避ツールについては、Youtube動画でも紹介しています。


<iframe width="560" height="315" src="https://www.youtube.com/embed/sQpU6Liqm_Q" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

こちらの動画は改良前のツールの説明ですが、ツールの使い方やツール利用にあたって必要な準備などを解説しています。

ツールを使えば、どのようにメッセージが保存できるか知りたい方は動画をご覧ください。

# 終わりに
今回、Slackに投稿された過去メッセージをスプレッドシートに対し、新しく投稿されたメッセージも蓄積できるツールを開発したことを紹介しました。

Slackの仕様変更により、フリープランのメッセージ上限が1万通から過去90日に変更されます。

チャットツールであるSlackで扱うべきはフロー情報なので、あるべき姿かもしれません。

しかし、無料版Slackは色々なところで活用されたため、過去のメッセージが見れなくなるのは不便です。

Slackの管理画面からパブリックチャンネルに投稿されたメッセージをエクスポート可能ですが、JSONファイルで会話ファイルが別個に分かれるので見づらいです。

Slackメッセージ保存・退避ツールは、Slackワークスペースの情報を取得し、選択したパブリックチャンネルに投稿されたメッセージをスプレッドシートに退避できます。

さらに、定期実行によって、新しく投稿されたメッセージも週次で保存できます。

これによって無料版Slackでも過去90日過ぎたメッセージをスプレッドシートで確認可能です。

メッセージ取得はSlackフリープランが変更になる9/1までに取得する必要があります。

興味がある方はAutoworkerのブログ記事にツールのより詳しい説明がありますので、御覧ください↓

https://auto-worker.com/blog/?p=6184