無料版Slackメッセージ保存・退避ツール!フリープランの1万→90日の変更への対策法
Slackは2022年9月よりフリープランの内容変更し、メッセージの表示制限を1万メッセージから過去90日にすると発表しました。
小規模なグループで使っていた場合、1万メッセージ上限だったのが過去90日以内の投稿しか表示されないのは、とても不便です。
そこで対策方法として、Slackに投稿されたメッセージをスプレッドシートに保存・退避するツールを開発しました。
(追記)Slackメッセージ保存・退避ツールをアップデートし、パブリックチャンネルの情報を自動取得し、複数チャンネルを保存できるようになりました(プライベートチャンネルも取得可能)。さらにSlackに投稿されたファイルをGoogleドライブに保存する機能も追加しました。
Slackの無料版フリープランが内容変更
2022年7月19日にSlackが有料版のプロプランの値上げと無料版のフリープランの内容変更を発表しました。
後者のフリープランの内容変更では、無料版Slackのメッセージ表示上限が2022年9月より1万通から過去90日以内になります。
小規模なグループや組織では1万メッセージで長期間やり取りが可能でしたが、仕様変更によって投稿してから90日を超えたメッセージが表示されなくなります。
※Slackフリープランの2022年9月からの変更内容は以下の記事で解説しています。
2022年9月から5月以前のSlack投稿が見れない…
Slackによるフリープランの変更は2022年9月1日より実施されます。
それによって、2022年6月よりも前に投稿されたメッセージがSlackのチャンネルやダイレクトメッセージで表示されなくなります。
大人数で活発にSlackフリープランを利用していれば、1ヶ月程度で1万メッセージを超える場合もあり、その場合はプラスです。
しかし、小規模なグループでは1万メッセージ投稿するまでに90日よりも長くかかるので、改悪と言えます。
Slackフリープラン変更でメッセージ保存・退避の需要増
Slackはフロー情報を扱うチャットツールなので、必要な情報は別途記録しておくべきというのが本来あるべき姿です。
しかし、Slackはその使いやすさもあり、オンラインコミュニケーションで頻繁に利用されており、チャット内で重要なやり取りも行われています。
そうした中、9月1日のSlackフリープラン変更前に、非表示になりそうなメッセージを別のところに保存、退避させるニーズが高まっています。
Slackチャンネル投稿メッセージ保存ツールを開発
Slackフリープランへの対策方法として、Slackに投稿されたメッセージをスプレッドシートに保存するツールを開発しました!
SlackのAPIが必要になりますが、APIのトークンと保存したいチャンネルIDをスプレッドシートに入力すれば、指定したチャンネルに投稿されたメッセージを取得できるツールです。
![Slackの特定チャンネルに投稿されたメッセージを取得するツール!フリープランが2022年9月から上限1万メッセージから過去90日に変更されることへの対策方法](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_001.jpg)
上記のSlackチャンネルのメッセージ保存ツールは、以下のSlackワークスペースのgeneralチャンネルの情報を取得しています。
![Slackメッセージ保管ツールで取得したSlackワークスペースのgeneralチャンネル](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_002.jpg)
通常ユーザーのメッセージだけでなく、ボットユーザーが投稿したメッセージやチャンネルへの参加情報も取得できます。
さらに、投稿メッセージへのスレッド返信も取得できるようになっています。
Slackチャンネルへの投稿が多い場合は1回の実行では取得できないものの、複数回実行することで、そのチャンネルで振り返ることができるメッセージをすべて取得できます。
![Slackメッセージ保存・退避ツールは実行を繰り返すことで閲覧できるメッセージをすべて吸い出し可能](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_016.jpg)
※複数回実行は手動で行う必要はなく、スケジュールによるトリガー実行で自動で取得可能です。
パブリックチャンネルだけでなく、プライベートチャンネルのメッセージも取得できるようになっています。
Slack APIの利用手順
本ツールを利用するにあたってはSlackのAPIで発行したトークンを利用する必要があります。
SlackAPIを使って、Slackのチャンネルに投稿された情報がプログラムで取得できるようになります。
そこで、ツール利用に必要なSlackAPIのトークン発行方法を解説します。
1.SlackAPIのページにアクセスし、「Create an app」ボタンをクリックします。
![SlackAPIの利用開始方法でSlackAPIのページにアクセス](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_004.jpg)
2.「Create an app」のダイアログに2つ選択肢が表示されるので、「From scratch」を選択します。
![SlackAPIの種類として「From Scratch」を選択](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_005.jpg)
3.SlackAPIのアプリ名と追加するSlackワークスペースを選択します。
![SlackAPIのアプリの名前とアプリを追加するワークスペースを選択し、「Create App」ボタンをクリック](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_006.jpg)
4.SlackAPIのメニュー「OAuth & Permissions」を選択し、「Bot Token Scopes」として「channels:history」、「channels:read」、「user:read」のスコープを選択します。
![Slackメッセージ保存・退避ツールを使うために必要なSlackAPIのOAuth権限はusers:readとchannels:read、channels:historyの3つ](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220728_auto_001.jpg)
※プライベートチャンネルの情報を取得したい場合は、groups:historyの権限が必要です。
5.メニュー「App Home」から「App Display Name」のEditで任意の名称を設定し、「Add」ボタンをクリックします。
![SlackAPIのメニュー「App Home」から「App Display Name」を任意の名称を設定](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_008.jpg)
6.再度「OAuth & Permissions」に移動し、「Install to Workspace」ボタンをクリックします。
![SlackAPIのメニュー「OAuth & Permissions」のInstall to Workspaceボタンをクリックし、Slackワークスペースに追加](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_009.jpg)
7.SlackAPIのアプリ作成時に選択したワークスペースへの追加画面が表示されるので、「許可する」ボタンをクリックします。
![Slackワークスペースの画面で作成したSlackAPIのアプリ追加の確認画面が表示されるので、「許可」ボタンをクリック](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_010.jpg)
8.Slackワークスペースに追加完了すると、Bot用のOAuth Token(Slack APIトークン)が発行されるので、Copyで控えておきます。
![SlackAPIのアプリをワークスペースに追加すると、ボット用のSlackトークンが生成されるのでコピー](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_011.jpg)
以上でツールの動作に必要となるSlackAPIのトークン発行が完了しました。
Slackチャンネルへのアプリ追加手順(+IDの調べ方)
続いて、メッセージを取得したいSlackのチャンネルのIDを調べる方法を解説します。
※(追記)改良版Slackメッセージ保存ツールでは、SlackAPIのアプリ追加のみでチャンネルIDは自動取得できるので、不要です。
チャンネルIDを取得前に当該チャンネルに先程作成したSlackAPIのアプリを追加します。
今回、オートワーカーのSlackワークスペースのgeneralチャンネルで試してみます。
1.左側にあるチャンネルからgeneralチャンネルを選択し、チャンネル名が表示されている箇所をクリックします。
![Slackワークスペースからメッセージを取得したいチャンネルを選択し、チャンネル名部分をクリック](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_013.jpg)
2.チャンネルの設定画面(general)が表示されるので、「インテグレーション」タブを選択し、「アプリを追加する」ボタンをクリックします。
![Slackチャンネルの情報画面で「インテグレーション」タブを選択し、「アプリを追加する」ボタンをクリック](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_014.jpg)
3.チャンネルに追加したいアプリの右側にある「追加」ボタンをクリックします。
![Slackチャンネルにアプリを追加する画面が表示されるので、追加したいSlackAPIアプリを選択し、追加](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_015.jpg)
これでSlackアプリがgeneralチャンネルに追加され、SlackAPI経由でチャンネルに投稿された情報を閲覧することができます。
取得したいSlackチャンネルIDは、チャンネル設定画面のチャンネル情報タブをスクロールすると、表示されているのでコピーします。
![Slackメッセージ保存・退避ツールで指定するチャンネルIDの調べ方](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_003.jpg)
以上でツールを利用するために必要なSlackAPIトークン発行、Slackアプリのチャンネル追加、チャンネルID取得が完了です。
![Slack無料版用のメッセージ投稿ツールにSlackAPIトークンと取得したいチャンネルIDを設定で準備完了](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220720_auto_012.jpg)
あとは、「メッセージ取得」ボタンをクリックすれば、前述したSlackメッセージ保存ツールのように、指定したチャンネルのメッセージが取得できるようになります。
(追記)改良版Slackメッセージ保存・退避ツール
Slackメッセージ保存・退避ツールについてさらなる改良を行って、機能追加を行いました。
その結果、以下の4つの機能をもつツールにアップデートされています。
- パブリックチャンネルの一覧情報を自動取得
- パブリックチャンネルのメッセージ取得
- プライベートチャンネルのメッセージ取得(手動設定)
- パブリック/プライベートのメッセージの定期保存
- Slackに投稿されたファイルをGoogleドライブ保存
パブリックチャンネルの一覧情報を自動取得
当初のツールではSlackのチャンネルIDを調べる必要がありましたが、ワークスペースから自動で取得できるようになりました。
![Slackメッセージ保存・退避ツール改良版ではワークスペースに存在するユーザーリストやパブリックチャンネル一覧を取得](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220723_auto_001.jpg)
「設定」シートにSlackAPIトークンを入力し、「Slack情報取得」ボタンを押すと、ユーザーリストとパブリックチャンネルの情報が出力されます。
![Slackメッセージ保存・退避ツール改良版はユーザーIDとユーザー名のリスト、パブリックチャンネル名とチャンネルIDを取得](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220723_auto_002.jpg)
ユーザーIDとユーザー名の対応表とチャンネルIDとチャンネル名のリストを取得できます。
チャンネルについてはすでにSlackAPIのアプリが追加されているか確認可能です。
パブリックチャンネルのメッセージ取得
さらに、ツール実行のタイミングでSlackワークスペースに存在するチャンネルごとにシートが生成されます。
生成されたシートにある「メッセージ取得」ボタンをクリックすると、過去に投稿されたメッセージで取得可能なものをスプレッドシートに出力します。
![Slackメッセージ保存・退避ツールの改良版はパブリックチャンネルごとにシートが作成され、投稿されたメッセージが取得可能](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220723_auto_003-1024x524.jpg)
元々はメッセージの投稿者やメッセージ内がユーザーIDでしたが、ユーザーIDとユーザー名の対応表からユーザー名に変換して表示されています。
プライベートチャンネルのメッセージ取得(手動設定)
パブリックチャンネルはチャンネルIDやシートが自動作成されますが、プライベートチャンネルは自動では取得できません。
その代わり、手動設定することで、プライベートチャンネルのメッセージも取得できます。
SlackのプライベートチャンネルにSlackAPIのアプリを追加し、APIの権限にgroups:historyを追加します。
その後、ツールの「雛形」シートをコピーしてプライベートチャンネルのIDを設定すれば、プライベートチャンネルのメッセージも取得可能です。
パブリック/プライベートのメッセージの定期保存
過去に投稿されたメッセージを保存した後、新しく投稿されたメッセージについても複数のチャンネルで定期的に自動保存を実行できるようになっています。
![Slackメッセージ保管ツールの改良版では、設定画面で選択した複数のチャンネルに対し、定期実行で新しく投稿されたメッセージが自動保存](https://auto-worker.com/blog/wp-content/uploads/2022/07/20220723_auto_004.jpg)
初期のツールによりもSlackワークスペース全体のパブリックチャンネルのデータが保存しやすくなっています。
これがあれば、2022年9月になってSlackフリープランで過去90日以前のメッセージが見えなくなってもツール上に保存されるので、問題ありません。
Slackに投稿されたファイルをGoogleドライブ保存
元々はSlackに投稿されたメッセージのみをGoogleスプレッドシートにバックアップするツールでした。
しかし、Slackに投稿されたファイルもバックアップできる機能を実装しました。
![Slackメッセージ保存・退避ツールで投稿されたファイルをGoogleドライブにバックアップする機能も追加実装](https://auto-worker.com/blog/wp-content/uploads/2022/07/20221002_auto_010.jpg)
事前にSlackAPIのスコープで「files:read」の権限を追加します。
その後、Googleドライブのフォルダ名を入力し、「ファイル一覧取得」を実行すると、SlackAPIアプリが追加されたチャンネルに投稿されたファイル情報がシートに出力されます。
![Slackメッセージ保存・退避ツールのファイル保存機能でSlackに投稿されたファイルをGoogleドライブに保存](https://auto-worker.com/blog/wp-content/uploads/2022/07/20221002_auto_011.jpg)
ファイル一覧のあと、取得不要なファイルを除外して、「ファイル保存」を実行すると、指定のGoogleドライブのフォルダにファイル保存され、ファイルが格納されたGoogleドライブURLが出力されます。
このようにパブリックチャンネルについては手軽に取得、プライベートチャンネルも取得できるようになり、さらにファイルもGoogleドライブに保存できるツールにアップデートされています。
※ダイレクトメッセージは本ツールでは対応していません。
Slackメッセージ保存・退避ツールに興味ある方はお問い合わせを
Slackメッセージ保存・退避ツールにご興味のある方がいらっしゃいましたら、問い合わせページよりご連絡ください。
Slack無料版を利用しているユーザーの方はメッセージが自動でスプレッドシートに保存できるので、便利です。
フリープランのまま9月1日以降、90日前のメッセージが非表示になると困る場合はスプレッドシートに退避して引き続き閲覧できます。
まとめ・終わりに
今回、Slack無料版であるフリープランの内容変更を受けて、Slackの特定チャンネルに投稿されたメッセージをスプレッドシートに保存するツールを開発したことを紹介しました。
2022年9月1日より90日以前に投稿されたメッセージが見れなくなるのが不便という方も多いです。
そこで、それまでにSlackメッセージ保存・退避ツールを使えば、スプレッドシートにメッセージを保管しておき、いつでも見返すことができます。
チャットツールであるSlackの投稿はフロー情報で、必要なものは別途保存するのが基本ですが、あとで振り返るケースも多いので、便利です。
Slackメッセージ保存・退避ツールにご興味ある方は、ぜひ問い合わせページよりご連絡ください。
ディスカッション
コメント一覧
qiitaで記事読まさせていただきました。
大変便利なツールですね!
こちらメッセージ保存・退避のスプレッドシートは配布はされていませんでしょうか。
こちらのコメント欄またはメールにてご連絡いただけましたら幸いです。
よろしくお願いいたします。
記事読ませていただきました。
公式からメッセージを出力したものの不便過ぎたため、
大変便利な機能だなと思い問い合わせさせていただきました。
こちらのツールは配布およびダウンロードリンクはございますでしょうか。
中村様と同様にメールアドレスでご連絡いただけましたら幸いです。
よろしくお願いいたします。
Slackに投稿されたメッセージとファイル(メール)をGoogleスプレッドシートに保存したいと考えて,Ongoing webhookを利用してみましたが,テキストは保存できるもののファイル(メール内容)を記録することができず,悩んでいます.Slack APIはまだ利用したことがありません.
開発されたツールにヒントがあるよう思いましたので,問合せさせていただきました.
どうぞよろしくお願いいたします.
吉田様
コメントありがとうございます。
Ongoing webhookですが、将来的に廃止予定の機能のため、Slackのドキュメントが確認できませんでした。
そのため、推測になりますが、Ongoing webhookではファイル情報は含まれていない可能性が高いです。
開発したツールはSlackAPIを利用しており、こちらはSlackに投稿したファイルを取得可能です。
そのため、ファイルを取得したい場合はSlackAPIのご利用をご検討ください。
なお、開発ツールをお使いいただければ、SlackAPIの設定とトークンを発行いただければ、すぐ利用できますので併せてご検討ください。