自動化
PR

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

sanane
記事内に商品プロモーションを含む場合があります

Slackのメッセージを、スプレッドシートに書き込んで(転記して)残しておきたい。Slackの無料プランでは、90日より古いメッセージが見えなくなり、1年より古いメッセージは順次削除されます(Slack公式ヘルプより)。あとから見返したい記録や、ファイルのやり取りを、手元に控えておきたい場面は少なくありません。

この記事では、Slackのチャンネルのメッセージ(スレッドの返信も)を「メッセージ」シートに保存し、時間ごとに自動で追記できる無料のスプレッドシートツールを配布します。メールアドレスなどの登録は不要で、GASのコードを貼り付ける作業もありません。Slack側でアプリを1つ作り(設定の文章を貼り付けるだけ)、配布シートをコピーして、トークンを登録すれば使えます。

こんな人にオススメ
  • Slackのメッセージをスプレッドシートに自動で保存したい
  • 無料プランで、古いメッセージが見えなくなる前に控えを取っておきたい
  • 複数のチャンネルを、まとめて定期的にバックアップしたい
  • スレッドの返信や、添付ファイルも一緒に残したい
  • コードを触らずに、コピーするだけで使えるツールが欲しい

この記事は2026年9月に、ツールごと全面的に書き直しました。以前は、SlackのEvents APIを使ってリアルタイムに転記する方法(GASのコードを貼り付け、Webアプリのデプロイと、Slack側へのURL登録が必要)を紹介していました。今回は、一定時間ごとにSlackへ取りに行く方式に変えています。手順は短くなりましたが、リアルタイムの転記ではなく、最短でも1時間ごとの保存です。

先に結論|使い方4ステップ

Slack Appを作る

api.slack.com/apps で「From a manifest」を選び、この記事のマニフェストを貼り付けてインストールします。できあがるBot用のトークン(xoxb- で始まる文字列)をコピーします。

配布シートをコピーして権限を許可

配布シートを自分のGoogleドライブにコピーし、初回だけGoogleの権限を許可します。

トークンを登録してチャンネルを読み込む

メニューの「⓪ Slackトークンを登録」にトークンを貼り付け、「① チャンネル一覧を読み込む」を押します。

チェックして保存(必要なら定期実行)

保存したいチャンネルにチェックを入れ、「② チェックしたチャンネルを保存」を押します。自動で続けたいときは「③ 定期実行をオンにする」を押します。

検証は、無料プランのテスト用ワークスペースにダミーの投稿を用意して行いました(最大でも1チャンネル63件ほどの小規模なものです)。トークンとメールアドレスは、画面上でマスクしています。

Slackの無料プランでは、古いメッセージが見えなくなる

Slackの公式ヘルプ(Customize data retention in Slack)によると、無料プランのワークスペースでは、次のような扱いになります。

  • 90日より古いメッセージとファイルは、画面上で非表示になる
  • 1年より古いメッセージとファイルは、2024年8月26日から順次、完全に削除される場合がある
  • 有料プランに切り替えても、すでに削除されたものは戻せない

このツールは、Slackが見せてくれる範囲のメッセージを、あなたのスプレッドシートにコピーしておく道具です。すでに消えたメッセージを復元するものではありません。古いメッセージが消えてしまう前に、早めに一度実行しておくのがおすすめです。

無料プランでは、ワークフロービルダーで作成・公開すること自体が有料機能です(この記事とは別に、テスト用ワークスペースで確認しました)。「Slackのワークフローでスプレッドシートに転記したい」と探してここに来た方も、無料プランのままなら、このツールが代わりになります。ワークフロービルダーの条件は、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」を押します。

Slack APIの「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
  }
}
「Create from a manifest」の画面。JSONの欄にマニフェストを貼り付けた状態で、「Next」ボタンが表示されている

1-3.権限を確認して「Create and Install」

「Next」を押すと確認画面になります。ここで、このアプリに付く権限(スコープ)が7つ並びます。内容は次のとおりです。

  • channels:history/groups:history:公開・非公開チャンネルのメッセージを読む
  • channels:read/groups:read:チャンネルの一覧と基本情報を読む
  • users:read:投稿者の表示名を調べる
  • files:read:添付ファイルをダウンロードする
  • channels:join:公開チャンネルにBotを参加させる
「Review your app」の画面。「What it can do in Slack (7)」に、channels:history・channels:join・channels:readなどのスコープが並んでいる

「Create and Install」を押すと、別のタブでインストールの許可画面が開きます。ここには、次の内容が日本語で表示されます。

  • 「(アプリ名)が連携されたパブリックチャンネルでメッセージやその他のコンテンツにアクセスする」
  • 「あなたのワークスペースのパブリックチャンネルに関する基本情報にアクセスする」
  • 「(アプリ名)が連携されたプライベートチャンネルでメッセージやその他のコンテンツにアクセスする」
  • 「(アプリ名)が連携されたプライベートチャンネルに関する基本情報にアクセスする」
  • 「(アプリ名)が連携されたチャンネルと会話で共有されたファイルにアクセスする」
  • 「あなたのワークスペースのメンバーを閲覧する」
  • 「あなたのワークスペースでパブリックチャンネルに参加する」

内容を確認して「許可する」を押します。

Slackのインストール許可画面。「Sheet Backup」アプリに許可する内容として、チャンネルと会話に関するコンテンツと情報が表示されている

1-4.Botのトークンをコピーする

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

OAuth & Permissionsの画面。「Bot User OAuth Token」の欄にxoxb-で始まるトークンが表示され(画像ではマスク済み)、「Copied!」と出ている

このトークンは、Slackへ入るための合言葉です。他の人に見せたり、ブログ・SNS・スクリーンショットに載せたりしないでください。不安になったときは、Slackのアプリ設定でアプリを削除すれば、そのトークンは使えなくなります(この記事のスクリーンショットでは、トークンをマスクしています)。

手順2|配布シートをコピーする

次のシートを開きます。

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

「ドキュメントのコピー」の画面。「添付の Apps Script ファイルと機能もコピーされます」という警告と、「コピーを作成」ボタンが表示されている

必ず「コピーを作成」してから使ってください。配布元のシートは閲覧専用なので編集できず、そのままではメニューも表示されません。

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

コピー直後のスプレッドシート。「Slackバックアップ」メニューを開くと、⓪Slackトークンを登録・①チャンネル一覧を読み込む・②チェックしたチャンネルを保存・③定期実行をオンにする・④定期実行をオフにする、が並んでいる

初回だけ|Googleの権限を許可する

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

「認証が必要です」のダイアログ。「このドキュメントに添付されたスクリプトを実行するには、あなたの許可が必要です」と表示され、「OK」ボタンがある

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

「このアプリは Google で確認されていません」という警告画面。左下に「詳細」のリンクがある(メールアドレスはマスク済み)

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

「詳細」を開いた警告画面。一番下に「【公開用】Slackメッセージ保存ツール(安全ではないページ)に移動」のリンクがある(メールアドレスはマスク済み)

アクセスの許可画面が開きます。求められる権限は次の5つです(画面の原文どおり)。「すべて選択」にチェックを入れて「続行」を押します。

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

ドライブの権限は「特定のファイルのみ」です。このツールが作るフォルダとファイル(添付ファイルの保存先)にしか触れず、ドライブのほかのファイルは見られません。「外部サービスへの接続」はSlackとの通信、「自分がいないときに実行」は自動実行(③)のための権限です。

許可が終わると、そのまま「⓪ Slackトークンを登録」が実行されて、トークンの入力欄が開きます(新しくコピーした2つのシートで確認しました)。

権限の許可は、「コピーを作成」したシートごとに必要です。新しくコピーを作り直した場合は、もう一度同じ手順で許可します。

手順3|トークンを登録して、チャンネルを読み込む

入力欄に、手順1でコピーしたトークンを貼り付けて「OK」を押します。

「Slackトークンを登録」のダイアログ。「Slack App の「Bot User OAuth Token」(xoxb- で始まる文字列)を貼り付けてください」と表示され、入力欄がある

トークンが正しければ、シートの「接続中のワークスペース」にワークスペース名とBotの名前が表示されます(表示されるまで数秒〜10秒ほどかかりました)。トークンはシートのセルには書かれず、スプレッドシートの内部に保存されます。

続けて、メニューの「① チャンネル一覧を読み込む」を押します。Botが見えるチャンネルが一覧に並びます。

「Slackバックアップ」シート。「接続中のワークスペース」にSANANEBLOG(Bot: sheet_backup)と表示され、チャンネル名・種別・Botの参加・保存した件数などの一覧が並んでいる
  • 公開チャンネルは、Botが未参加でも一覧に出ます。「② 保存」を実行したときに、Botが自動で参加します
  • 非公開チャンネルは、SlackでBotを招待した分だけ一覧に出ます(招待していないものは出ませんでした)。招待は、そのチャンネルで /invite @Botの名前 を実行します

Botが公開チャンネルに参加すると、そのチャンネルに「(Botの名前) が参加しました」と表示されます(下の比較画像の左側でも確認できます)。チャンネルのメンバーに見えるので、業務で使うときは事前に周知してください。

手順4|チャンネルを選んで保存する

保存したいチャンネルのチェックボックスにチェックを入れます。シートの上のほうには、次の設定欄があります。

  • 取得開始日(B3):空欄なら、チャンネルを作った日から保存します(Slackが見せてくれる範囲まで)。「2026/09/01」のように入れると、その日以降だけを保存します
  • 添付ファイルを保存(B4):「しない」(初期値)か「する」。「する」にすると、添付ファイルをGoogleドライブにも保存します
  • 定期実行の間隔(B5):「1時間ごと」「6時間ごと」「毎日」
「Slackバックアップ」シート。取得開始日は空欄、添付ファイルを保存は「する」、backup-test-a・backup-test-b・backup-test-private・times-sanane-testの4つのチャンネルにチェックが入っている

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

「保存が終わりました。新しく保存したメッセージ: 108件(対象 4チャンネル)」と表示されたダイアログ。背景に「メッセージ」シートが見える

保存されたメッセージは、「メッセージ」シートに1件1行で並びます。列は次のとおりです。

  • 日時/チャンネル/投稿者/本文
  • 区分(「投稿」または「返信」)/親投稿の日時(返信のとき)
  • 添付ファイル(ファイル名)/保存したファイル(Googleドライブのリンク)
  • Slackで開く(そのメッセージへのリンク)

Slackの画面と、保存されたシートを並べると、次のように対応します。スレッドの返信は「区分」が「返信」になって親投稿の日時が入り、添付ファイルはファイル名とGoogleドライブのリンクになります。

Slackのチャンネル画面(上)と、保存された「メッセージ」シート(下)の比較。スレッドの返信は区分「返信」と親投稿の日時、添付ファイルはファイル名とGoogleドライブのリンクとして保存されている

今回の検証では、4チャンネル・108件(公開3・非公開1(うち1つは、以前の検証で使ったチャンネル))が、1回の実行で保存されました。1回の実行は約4分30秒で区切られ、時間が足りないときは次の実行で続きから保存する設計です(この動作は試していません)。

二重に保存されない|あとから付いた返信も拾う

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

2回目の保存の結果ダイアログ。「新しく保存したメッセージ: 0件(対象 3チャンネル)」と表示されている

スレッドの返信は、親投稿を保存したあとに付くことがあります。そのため、直近7日分は毎回取り直して、まだ保存していない返信を追加しています。検証では、保存済みの親投稿にあとから付けた返信が、次の保存で追加されました(親投稿の日時つき)。

親投稿から8日以上たってから付いた返信は、取り直しの範囲から外れるため、保存されない設計です(この記事では試していません)。

添付ファイルをGoogleドライブに保存する

B4を「する」にして保存すると、添付ファイルがGoogleドライブに保存されます。保存先はマイドライブの「Slackバックアップ」フォルダで、その中にチャンネル名のフォルダが作られます。

Googleドライブの「Slackバックアップ」フォルダ。中に、保存したチャンネル名(backup-test-a・backup-test-b・times-sanane-test)のフォルダが並んでいる

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

Googleドライブの「backup-test-b」フォルダ。日時から始まる名前の画像・テキストファイルが4つ保存されている
  • 20MBを超える添付ファイルは保存せず、その旨を「保存したファイル」列に書く設計です(この記事では試していません)
  • ダウンロードできなかったときは、原因(HTTPの番号など)を同じ列に書きます
  • B4が「しない」のときは、ファイル名だけを記録します

定期実行で、自動で保存する

保存したいチャンネルにチェックを入れたまま、メニューの「③ 定期実行をオンにする」を押すと、B5で選んだ間隔で自動的に保存されます。「毎日」を選んだときは、午前3時ごろに実行される設定です。止めるときは「④ 定期実行をオフにする」を押します。

「定期実行」が「オン(1時間ごと)」、「最後の定期実行」に実行日時と「新規0件」が表示された「Slackバックアップ」シート

実際に、③をオンにした直後(23:52)に最初の自動実行が動き、2時間後の01:52にも実行されて、そのたびに「最後の定期実行」が更新されました。オンにしたあとにSlackへ投稿したメッセージ(00:05)は、次の自動実行で1件だけ保存されました(二重には保存されません)。画面を開いていなくても動きます。

  • 定期実行の対象は、チェックを入れたチャンネルです(あとからチェックを変えると、次の実行から反映されます)
  • 実行結果は、シートの「最後の定期実行」に日時と新しく保存した件数で表示されます
  • 自動実行は、コピーしたシートの持ち主のGoogleアカウントで動きます

データとトークンの扱い(安全面)

  • 保存先はあなたのスプレッドシートとドライブだけです。このツールが通信するのはSlackとGoogleだけで、配布元にメッセージが送られることはありません(コードは「拡張機能」→「Apps Script」で確認できます)
  • Slackへは読むだけです。投稿・編集・削除の権限は付けていません。Slackに対して行うのは、メッセージ・チャンネル・ユーザー・ファイルの読み取りと、公開チャンネルへの参加だけです
  • トークンは、シートのセルではなくスプレッドシートの内部に保存されます。ただし、そのシートを「編集者」で共有した人は、スクリプトを開いて取り出せます。他の人に共有するときは「閲覧のみ」にしてください
  • 他のメンバーの発言を保存することになります。ワークスペースやコミュニティのルール、個人情報の取り扱いを確認してから使ってください

うまくいかないとき

「Slackトークンが正しくないか、無効になっています。」と出る

トークンを貼り間違えたか、Slack側でアプリを削除・再インストールしたときに出ます。メニューの「⓪ Slackトークンを登録」から、正しい「Bot User OAuth Token」を登録し直してください(形が違うトークンは、登録の時点で弾かれます)。

「Slackトークンが正しくないか、無効になっています。メニューの「⓪ Slackトークンを登録」から、登録し直してください。」というエラーダイアログ

非公開チャンネルが一覧に出ない

Botを招待していない非公開チャンネルは、一覧に出ません。Slackで、そのチャンネルに /invite @Botの名前 を実行してから、「① チャンネル一覧を読み込む」をもう一度押してください。

メニューが出てこない/保存が途中で止まった

メニューが出ないときは、数秒待つか、ページを再読み込みしてください。保存が途中で止まったときは、もう一度「② チェックしたチャンネルを保存」を押すと、続きから保存します。

この記事では試していないこと

  • 90日を超えた古いメッセージが取得できるか(テスト用ワークスペースの都合で、確認できていません)
  • 1回で200件以上を取得できるか(検証したチャンネルは最大でも63件です)
  • 有料プランのワークスペースでの動作
  • Slack Connectの共有チャンネル、DM・グループDM(DMは対象外です)
  • 数千件を超える大きなチャンネル、4分30秒での中断と続きからの再開
  • 20MBを超える添付ファイル、Slack側で編集・削除したメッセージの扱い
  • 親投稿から8日以上たってから付いた返信

はじめて使うときは、件数の少ないチャンネルを1つだけチェックして試し、保存の内容を確認してから本番のチャンネルに広げてください。

よくある質問

Q
無料プランでも使えますか?有料プランでは?

この記事の検証は、無料プランのワークスペースで行いました。有料プランのワークスペースでは試していません。

Q
過去のメッセージを、すべてさかのぼって保存できますか?

Slackが見せてくれる範囲までです。取得開始日(B3)を空欄にすると、チャンネルを作った日から取りに行きます。90日を超えて非表示になったメッセージが取得できるかは、確認できていません。古いメッセージが消える前に、早めに一度実行しておくのがおすすめです。

Q
ワークフロービルダーでスプレッドシートに転記できますか?

ワークフロービルダーは、作成・公開自体が有料機能です(無料プランでは使えません)。詳しくはSlackワークフロービルダーの使い方をご覧ください。無料プランで転記したいときは、このツールを使えます。

Q
リアルタイムで転記できますか?

このツールは、一定時間ごとにSlackへ取りに行く方式で、リアルタイムの転記には対応していません(最短でも1時間ごと)。

Q
Slackでメッセージを編集・削除したら、シートも変わりますか?

変わりません。一度保存した行は書き換えない設計なので、保存後にSlack側で編集・削除しても、シートには保存時の内容が残ります。

Q
「このアプリはGoogleで確認されていません」と出て不安です

Googleの審査を受けた市販アプリではなく、個人が配布しているスクリプトに共通して出る一般的な警告です。求める権限は、この記事の「初回だけ|Googleの権限を許可する」に原文で載せた5つです。ドライブは「特定のファイルのみ」で、ツールが作るフォルダ・ファイルにしか触れません。

Q
トークンが人に見られてしまったかもしれません

Slackのアプリ設定(api.slack.com/apps)で、そのアプリを削除してください。トークンは使えなくなります。新しくアプリを作り直し(手順1)、「⓪ Slackトークンを登録」から新しいトークンを登録してください。

Q
別のワークスペースも保存したいです

1つのシートには、1つのワークスペースのトークンを登録します。別のワークスペース用には、配布シートをもう一度コピーして、別のトークンを登録してください。

まとめ

  • Slackの無料プランでは、90日より古いメッセージが非表示になり、1年より古いものは削除される場合がある(Slack公式ヘルプ)
  • Slack Appをマニフェストの貼り付けで作り、配布シートにトークンを登録すれば、複数チャンネルのメッセージをスプレッドシートに保存できる
  • スレッドの返信・添付ファイル(Googleドライブへ)にも対応。同じメッセージは二重に保存されない
  • 定期実行は最短1時間ごとで、リアルタイムの転記ではない
  • Slackへは読むだけ。ただし公開チャンネルにBotが参加すると、参加のお知らせが表示される
  • 90日超の取得、有料プラン、DMなどは未確認。まず1チャンネルで試す

更新履歴

  • 2026年9月20日:ツールを公開し、記事を全面的に書き直しました(リアルタイム転記の方式から、定期的に取得する方式に変更)。
  • 2023年9月26日:初版を公開しました(GASのコードを貼り付ける方式)。

配布したシートは、コピーした時点のスクリプトが各自のドライブに複製されます。あとからツールを修正した場合は、この記事の更新履歴でお知らせするので、新しい版が必要なときはもう一度シートをコピーしてください。

Slackのアプリ(Bot)やトークンの扱いに慣れておきたい方、通知の自動化に興味がある方は、あわせてこちらの記事もご覧ください。

あわせて読みたい
Slack Incoming Webhookの使い方|App作成からcurl送信・Block Kitまで
Slack Incoming Webhookの使い方|App作成からcurl送信・Block Kitまで
あわせて読みたい
Slackワークフロービルダーの使い方|必要なプランと作成・公開の手順
Slackワークフロービルダーの使い方|必要なプランと作成・公開の手順
あわせて読みたい
Slackの各種ID確認方法|チャンネル・ワークスペース・ユーザーIDの調べ方
Slackの各種ID確認方法|チャンネル・ワークスペース・ユーザーIDの調べ方
記事URLをコピーしました