数日前、今年の9月1日からSlackのフリープランではメッセージ履歴が過去90日分までしか閲覧できなくなるとの発表がありました。
ただし、改定後のフリープランでは過去のメッセージ履歴やファイルを保存できるのは「最大90日間」のみ。これらの変更も値上げと同時の9月1日から適用され、同日以降は過去90日以前のメッセージやアップロードしたファイルが非表示になる。
90日間を過ぎたメッセージとファイルを閲覧したい場合は、有料プランへのアップグレードが必要。これまで大学のサークル等で無料版を使用していたユーザーは、重要なファイルのバックアップを忘れないようにしたいところだ。
https://forest.watch.impress.co.jp/docs/news/1426026.html より
プライベートでSlackのフリープランを利用しているので、添付ファイルはともかくメッセージが遡れなくなるのはツライところがありますが、幸いSlackにはメッセージを取得するためのAPIが用意されているので、これを使って外部にログを残しておくための簡単なスクリプトを書いてみました。
APIトークンの取得方法
APIを利用するにはトークンが必要になるため、まずは下記の手順でトークンを取得しておきます。下記手順は2022年7月時点の情報で、今後仕様が変更される可能性がある点にはご注意ください。
- サインインした状態でSlack APIのサイトにアクセスします。
- 「Create an app」ボタンをクリックします。
- 「From scratch」を選択します。
- アプリ名の入力(App Name)とワークスペースを選択(Pick a workspace to develop your app in:)し、「Create App」ボタンをクリックします。
- Settingsメニューの「Basic Information」から「Permissions」を選択します。
- Scopesの「User Token Scopes」にある「Add an OAuth Scope」ボタンをクリックします。
- 「channels:history」と「channels:read」を追加します(※後述のチャンネル指定のスクリプトしか使用しない場合は「channels:read」は不要)。
- 「OAuth Tokens for Your Workspace」にある「Install to Workspace」ボタンをクリックします。
- 権限のリクエスト画面が表示されたら「許可する」ボタンをクリックします。
- トークンが発行されるので、「User OAuth Token」をコピーしておきます。
以上でAPIトークンの取得作業は終了です。
取得したトークンは漏れないよう保管しておく必要があります。
SlackのメッセージをCSVファイルとして保存するPowerShellスクリプト
今回書いたスクリプトが下記になります。
メッセージを保存できれば保存先は何でも良かったのですが、今回はとりあえず加工しやすいCSVファイルとして出力することにしました。
チャンネル指定
まずは指定したチャンネルのメッセージを保存するスクリプトです。
スクリプト内のチャンネルIDとトークンは環境に合わせて変更する必要があります。
チャンネルIDはURLやアプリのチャンネル詳細から確認できます。
全パブリックチャンネル
次はAPIでチャンネル情報を取得して、全パブリックチャンネルを対象にメッセージを保存するスクリプトです。
こちらもスクリプト内のトークンを環境に合わせて変更する必要があります。
出力したCSVファイル
スクリプトを実行すると下図のようなCSVファイルがデスクトップに出力されます。
2、30行程度の簡単なスクリプトですが、これでメッセージのバックアップを取るという目的は達成できました。
開発知識がないので困っていたところこちらのスクリプトを見つけてお借りしました。
無事保存でき非常に助かりました。ありがとうございました!