Slackのメッセージをスプレッドシートに自動保存する方法|無料ツールで複数チャンネルもバックアップ

Slackのメッセージを、スプレッドシートに書き込んで(転記して)残しておきたい。Slackの無料プランでは、90日より古いメッセージが見えなくなり、1年より古いメッセージは順次削除されます(Slack公式ヘルプより)。あとから見返したい記録や、ファイルのやり取りを、手元に控えておきたい場面は少なくありません。
この記事では、Slackのチャンネルのメッセージ(スレッドの返信も)を「メッセージ」シートに保存し、時間ごとに自動で追記できる無料のスプレッドシートツールを配布します。メールアドレスなどの登録は不要で、GASのコードを貼り付ける作業もありません。Slack側でアプリを1つ作り(設定の文章を貼り付けるだけ)、配布シートをコピーして、トークンを登録すれば使えます。
- Slackのメッセージをスプレッドシートに自動で保存したい
- 無料プランで、古いメッセージが見えなくなる前に控えを取っておきたい
- 複数のチャンネルを、まとめて定期的にバックアップしたい
- スレッドの返信や、添付ファイルも一緒に残したい
- コードを触らずに、コピーするだけで使えるツールが欲しい
先に結論|使い方4ステップ
api.slack.com/apps で「From a manifest」を選び、この記事のマニフェストを貼り付けてインストールします。できあがるBot用のトークン(xoxb- で始まる文字列)をコピーします。
配布シートを自分のGoogleドライブにコピーし、初回だけGoogleの権限を許可します。
メニューの「⓪ Slackトークンを登録」にトークンを貼り付け、「① チャンネル一覧を読み込む」を押します。
保存したいチャンネルにチェックを入れ、「② チェックしたチャンネルを保存」を押します。自動で続けたいときは「③ 定期実行をオンにする」を押します。
Slackの無料プランでは、古いメッセージが見えなくなる
Slackの公式ヘルプ(Customize data retention in Slack)によると、無料プランのワークスペースでは、次のような扱いになります。
- 90日より古いメッセージとファイルは、画面上で非表示になる
- 1年より古いメッセージとファイルは、2024年8月26日から順次、完全に削除される場合がある
- 有料プランに切り替えても、すでに削除されたものは戻せない
このツールは、Slackが見せてくれる範囲のメッセージを、あなたのスプレッドシートにコピーしておく道具です。すでに消えたメッセージを復元するものではありません。古いメッセージが消えてしまう前に、早めに一度実行しておくのがおすすめです。
このツールでできること・できないこと
できること
- 公開チャンネルのメッセージの保存(Botが自動で参加します)
- SlackでBotを招待した非公開チャンネルのメッセージの保存
- 本文・投稿者・日時の保存。
@メンションは名前に、#チャンネルはチャンネル名に、リンクは読める形に直します - スレッドの返信の保存(区分「返信」と、親投稿の日時つき)
- 各メッセージをSlackで開くリンクの保存
- 添付ファイルの名前の保存と、Googleドライブへの保存(選択式)
- 同じメッセージを二重に保存しないための照合
- 1時間ごと・6時間ごと・毎日の自動実行
できないこと・しないこと
- DM・グループDMの保存(対象外です)
- Botを招待していない非公開チャンネルの保存(一覧にも出ません)
- リアルタイムの転記(最短でも1時間ごと)
- Slackで編集・削除した内容の反映(保存済みの行は書き換えません)
- Slackへの投稿・編集・削除(このツールは読むだけです。投稿の権限は付けていません)
手順1|Slack Appを作る
Slackのメッセージを読むには、Slack側に「アプリ」を1つ作り、その合言葉(トークン)をシートに登録します。設定項目が多く見えますが、下のマニフェスト(設定内容をまとめた文章)を貼り付けるだけで作れます。
1-1.「From a manifest」を選ぶ
api.slack.com/apps を開き、「Create New App」を押します(アプリがまだ1つもないときは「Create an App」と表示されます)。「Create new app」の画面が開くので、「From a manifest」を選んで「Continue」を押します。

1-2.ワークスペースを選んでマニフェストを貼り付ける
ワークスペースを選び、次のマニフェストをJSONの欄に貼り付けます(元から入っている文字は消します)。アプリの名前(Sheet Backup)は、好きな名前に変えてかまいません。
{
"display_information": {
"name": "Sheet Backup"
},
"features": {
"bot_user": {
"display_name": "Sheet Backup",
"always_online": false
}
},
"oauth_config": {
"scopes": {
"bot": [
"channels:history",
"channels:join",
"channels:read",
"groups:history",
"groups:read",
"users:read",
"files:read"
]
}
},
"settings": {
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"is_hosted": false,
"token_rotation_enabled": false
}
}
1-3.権限を確認して「Create and Install」
「Next」を押すと確認画面になります。ここで、このアプリに付く権限(スコープ)が7つ並びます。内容は次のとおりです。
channels:history/groups:history:公開・非公開チャンネルのメッセージを読むchannels:read/groups:read:チャンネルの一覧と基本情報を読むusers:read:投稿者の表示名を調べるfiles:read:添付ファイルをダウンロードするchannels:join:公開チャンネルにBotを参加させる

「Create and Install」を押すと、別のタブでインストールの許可画面が開きます。ここには、次の内容が日本語で表示されます。
- 「(アプリ名)が連携されたパブリックチャンネルでメッセージやその他のコンテンツにアクセスする」
- 「あなたのワークスペースのパブリックチャンネルに関する基本情報にアクセスする」
- 「(アプリ名)が連携されたプライベートチャンネルでメッセージやその他のコンテンツにアクセスする」
- 「(アプリ名)が連携されたプライベートチャンネルに関する基本情報にアクセスする」
- 「(アプリ名)が連携されたチャンネルと会話で共有されたファイルにアクセスする」
- 「あなたのワークスペースのメンバーを閲覧する」
- 「あなたのワークスペースでパブリックチャンネルに参加する」
内容を確認して「許可する」を押します。

1-4.Botのトークンをコピーする
アプリの設定画面の左メニューから「OAuth & Permissions」を開くと、「Bot User OAuth Token」(xoxb- で始まる文字列)が表示されます。右端の「Copy」を押して、クリップボードにコピーしておきます。

手順2|配布シートをコピーする
次のシートを開きます。
開いた直後の配布シートは「閲覧のみ」の状態です。上部メニューの「ファイル」→「コピーを作成」を選びます。「Apps Script ファイルと機能もコピーされますので、添付のスクリプトをご確認ください」という案内が出ますが、そのまま「コピーを作成」を押してください。ツールの中身(スクリプト)も含めて、自分のGoogleドライブに複製されます。

コピーが開くと、シートの1枚目に「Slackバックアップ」というシートができ、上部メニューに「💬 Slackバックアップ」が追加されます。この記事の⓪〜④は、すべてこのメニューから実行します。メニューが表示されるまでに数秒かかることがあります。

初回だけ|Googleの権限を許可する
メニューの「⓪ Slackトークンを登録」を押すと、初回だけ「認証が必要です」と表示されます。「OK」を押して、Googleの許可画面に進みます。

個人が配布しているスクリプトには共通で、「このアプリは Google で確認されていません」という警告が出ます。左下の「詳細」を押します。

表示が広がったら、「(ツール名)(安全ではないページ)に移動」を押します。

アクセスの許可画面が開きます。求められる権限は次の5つです(画面の原文どおり)。「すべて選択」にチェックを入れて「続行」を押します。
- 「このアプリで使用する Google ドライブ上の特定のファイルのみの参照、編集、作成、削除 です。」
- 「このアプリケーションがインストールされているスプレッドシートの表示と管理 です。」
- 「外部サービスへの接続 です。」
- 「自分がいないときにこのアプリケーションを実行できるようにします です。」
- 「Google アプリケーション内のプロンプトとサイドバーで、サードパーティのウェブコンテンツを表示、実行します です。」

許可が終わると、そのまま「⓪ Slackトークンを登録」が実行されて、トークンの入力欄が開きます(新しくコピーした2つのシートで確認しました)。
手順3|トークンを登録して、チャンネルを読み込む
入力欄に、手順1でコピーしたトークンを貼り付けて「OK」を押します。

トークンが正しければ、シートの「接続中のワークスペース」にワークスペース名とBotの名前が表示されます(表示されるまで数秒〜10秒ほどかかりました)。トークンはシートのセルには書かれず、スプレッドシートの内部に保存されます。
続けて、メニューの「① チャンネル一覧を読み込む」を押します。Botが見えるチャンネルが一覧に並びます。

- 公開チャンネルは、Botが未参加でも一覧に出ます。「② 保存」を実行したときに、Botが自動で参加します
- 非公開チャンネルは、SlackでBotを招待した分だけ一覧に出ます(招待していないものは出ませんでした)。招待は、そのチャンネルで
/invite @Botの名前を実行します
手順4|チャンネルを選んで保存する
保存したいチャンネルのチェックボックスにチェックを入れます。シートの上のほうには、次の設定欄があります。
- 取得開始日(B3):空欄なら、チャンネルを作った日から保存します(Slackが見せてくれる範囲まで)。「2026/09/01」のように入れると、その日以降だけを保存します
- 添付ファイルを保存(B4):「しない」(初期値)か「する」。「する」にすると、添付ファイルをGoogleドライブにも保存します
- 定期実行の間隔(B5):「1時間ごと」「6時間ごと」「毎日」

メニューの「② チェックしたチャンネルを保存」を押します。終わると、保存した件数がダイアログで表示されます。

保存されたメッセージは、「メッセージ」シートに1件1行で並びます。列は次のとおりです。
- 日時/チャンネル/投稿者/本文
- 区分(「投稿」または「返信」)/親投稿の日時(返信のとき)
- 添付ファイル(ファイル名)/保存したファイル(Googleドライブのリンク)
- Slackで開く(そのメッセージへのリンク)
Slackの画面と、保存されたシートを並べると、次のように対応します。スレッドの返信は「区分」が「返信」になって親投稿の日時が入り、添付ファイルはファイル名とGoogleドライブのリンクになります。

二重に保存されない|あとから付いた返信も拾う
もう一度「② 保存」を押しても、同じメッセージは保存されません。チャンネルIDと投稿時刻をキーにして、保存済みかどうかを照合しています。実際に、2回目を押した結果は「新しく保存したメッセージ: 0件」でした。

スレッドの返信は、親投稿を保存したあとに付くことがあります。そのため、直近7日分は毎回取り直して、まだ保存していない返信を追加しています。検証では、保存済みの親投稿にあとから付けた返信が、次の保存で追加されました(親投稿の日時つき)。
添付ファイルをGoogleドライブに保存する
B4を「する」にして保存すると、添付ファイルがGoogleドライブに保存されます。保存先はマイドライブの「Slackバックアップ」フォルダで、その中にチャンネル名のフォルダが作られます。

ファイル名は「メッセージの日時+元のファイル名」(例:20260919232455_sample2.png)になり、「メッセージ」シートの「保存したファイル」列にリンクが入ります。=budget.txtのように、=で始まるファイル名も保存できました。

- 20MBを超える添付ファイルは保存せず、その旨を「保存したファイル」列に書く設計です(この記事では試していません)
- ダウンロードできなかったときは、原因(HTTPの番号など)を同じ列に書きます
- B4が「しない」のときは、ファイル名だけを記録します
定期実行で、自動で保存する
保存したいチャンネルにチェックを入れたまま、メニューの「③ 定期実行をオンにする」を押すと、B5で選んだ間隔で自動的に保存されます。「毎日」を選んだときは、午前3時ごろに実行される設定です。止めるときは「④ 定期実行をオフにする」を押します。

実際に、③をオンにした直後(23:52)に最初の自動実行が動き、2時間後の01:52にも実行されて、そのたびに「最後の定期実行」が更新されました。オンにしたあとにSlackへ投稿したメッセージ(00:05)は、次の自動実行で1件だけ保存されました(二重には保存されません)。画面を開いていなくても動きます。
- 定期実行の対象は、チェックを入れたチャンネルです(あとからチェックを変えると、次の実行から反映されます)
- 実行結果は、シートの「最後の定期実行」に日時と新しく保存した件数で表示されます
- 自動実行は、コピーしたシートの持ち主のGoogleアカウントで動きます
データとトークンの扱い(安全面)
- 保存先はあなたのスプレッドシートとドライブだけです。このツールが通信するのはSlackとGoogleだけで、配布元にメッセージが送られることはありません(コードは「拡張機能」→「Apps Script」で確認できます)
- Slackへは読むだけです。投稿・編集・削除の権限は付けていません。Slackに対して行うのは、メッセージ・チャンネル・ユーザー・ファイルの読み取りと、公開チャンネルへの参加だけです
- トークンは、シートのセルではなくスプレッドシートの内部に保存されます。ただし、そのシートを「編集者」で共有した人は、スクリプトを開いて取り出せます。他の人に共有するときは「閲覧のみ」にしてください
- 他のメンバーの発言を保存することになります。ワークスペースやコミュニティのルール、個人情報の取り扱いを確認してから使ってください
うまくいかないとき
「Slackトークンが正しくないか、無効になっています。」と出る
トークンを貼り間違えたか、Slack側でアプリを削除・再インストールしたときに出ます。メニューの「⓪ Slackトークンを登録」から、正しい「Bot User OAuth Token」を登録し直してください(形が違うトークンは、登録の時点で弾かれます)。

非公開チャンネルが一覧に出ない
Botを招待していない非公開チャンネルは、一覧に出ません。Slackで、そのチャンネルに /invite @Botの名前 を実行してから、「① チャンネル一覧を読み込む」をもう一度押してください。
メニューが出てこない/保存が途中で止まった
メニューが出ないときは、数秒待つか、ページを再読み込みしてください。保存が途中で止まったときは、もう一度「② チェックしたチャンネルを保存」を押すと、続きから保存します。
この記事では試していないこと
- 90日を超えた古いメッセージが取得できるか(テスト用ワークスペースの都合で、確認できていません)
- 1回で200件以上を取得できるか(検証したチャンネルは最大でも63件です)
- 有料プランのワークスペースでの動作
- Slack Connectの共有チャンネル、DM・グループDM(DMは対象外です)
- 数千件を超える大きなチャンネル、4分30秒での中断と続きからの再開
- 20MBを超える添付ファイル、Slack側で編集・削除したメッセージの扱い
- 親投稿から8日以上たってから付いた返信
はじめて使うときは、件数の少ないチャンネルを1つだけチェックして試し、保存の内容を確認してから本番のチャンネルに広げてください。
よくある質問
- 無料プランでも使えますか?有料プランでは?
この記事の検証は、無料プランのワークスペースで行いました。有料プランのワークスペースでは試していません。
- 過去のメッセージを、すべてさかのぼって保存できますか?
Slackが見せてくれる範囲までです。取得開始日(B3)を空欄にすると、チャンネルを作った日から取りに行きます。90日を超えて非表示になったメッセージが取得できるかは、確認できていません。古いメッセージが消える前に、早めに一度実行しておくのがおすすめです。
- ワークフロービルダーでスプレッドシートに転記できますか?
ワークフロービルダーは、作成・公開自体が有料機能です(無料プランでは使えません)。詳しくはSlackワークフロービルダーの使い方をご覧ください。無料プランで転記したいときは、このツールを使えます。
- リアルタイムで転記できますか?
このツールは、一定時間ごとにSlackへ取りに行く方式で、リアルタイムの転記には対応していません(最短でも1時間ごと)。
- Slackでメッセージを編集・削除したら、シートも変わりますか?
変わりません。一度保存した行は書き換えない設計なので、保存後にSlack側で編集・削除しても、シートには保存時の内容が残ります。
- 「このアプリはGoogleで確認されていません」と出て不安です
Googleの審査を受けた市販アプリではなく、個人が配布しているスクリプトに共通して出る一般的な警告です。求める権限は、この記事の「初回だけ|Googleの権限を許可する」に原文で載せた5つです。ドライブは「特定のファイルのみ」で、ツールが作るフォルダ・ファイルにしか触れません。
- トークンが人に見られてしまったかもしれません
Slackのアプリ設定(api.slack.com/apps)で、そのアプリを削除してください。トークンは使えなくなります。新しくアプリを作り直し(手順1)、「⓪ Slackトークンを登録」から新しいトークンを登録してください。
- 別のワークスペースも保存したいです
1つのシートには、1つのワークスペースのトークンを登録します。別のワークスペース用には、配布シートをもう一度コピーして、別のトークンを登録してください。
まとめ
- Slackの無料プランでは、90日より古いメッセージが非表示になり、1年より古いものは削除される場合がある(Slack公式ヘルプ)
- Slack Appをマニフェストの貼り付けで作り、配布シートにトークンを登録すれば、複数チャンネルのメッセージをスプレッドシートに保存できる
- スレッドの返信・添付ファイル(Googleドライブへ)にも対応。同じメッセージは二重に保存されない
- 定期実行は最短1時間ごとで、リアルタイムの転記ではない
- Slackへは読むだけ。ただし公開チャンネルにBotが参加すると、参加のお知らせが表示される
- 90日超の取得、有料プラン、DMなどは未確認。まず1チャンネルで試す
更新履歴
- 2026年9月20日:ツールを公開し、記事を全面的に書き直しました(リアルタイム転記の方式から、定期的に取得する方式に変更)。
- 2023年9月26日:初版を公開しました(GASのコードを貼り付ける方式)。
配布したシートは、コピーした時点のスクリプトが各自のドライブに複製されます。あとからツールを修正した場合は、この記事の更新履歴でお知らせするので、新しい版が必要なときはもう一度シートをコピーしてください。
Slackのアプリ(Bot)やトークンの扱いに慣れておきたい方、通知の自動化に興味がある方は、あわせてこちらの記事もご覧ください。









