Amazonで商品を見るセール会場へ

Slackのメッセージ削除とGAS旧コードの注意点|廃止API・権限・対象範囲

ChatworkからSlackに転送した際に#generalに大量のログが転送されてしまったため、Google Apps Script(GAS)を使って一括削除しました。

目次

旧コードはそのまま実行できません

2026年10月24日に公式資料と旧コード2件を読み直しました。レガシーテスタートークンは新規発行できず、旧コードのchannels.list・channels.historyは2021年2月24日に廃止されたAPIです。トークンだけを交換して使えるコードではありません。現在のアプリでは、必要な権限を設定し、Conversations APIへの移行が必要です。

また、chat.deleteメソッドの公式の仕様では、ユーザートークンは、そのユーザーがSlack上で自分で削除できるメッセージに限られ、Botトークンは、そのBotが投稿したメッセージだけを削除できます。他の人の投稿を、すべて削除できるとは限りません。

以下は過去の実装記録です。旧コードは一覧のページ送り、削除応答のok判定、429への待機処理、対象の事前確認がなく、全件処理を保証できません。現行APIで動作する一括削除ツールは本稿では提供していません。

スポンサーリンク

過去に使ったGASコードと現在の制約

当時参照した記事とコードを資料として残します。旧APIを使うため、現在の実行手順には使わないでください。

旧コードの参照先

旧コードはトークンをURLのクエリに付けています。現在の実装では秘密情報をURLや公開コードへ書かず、認証ヘッダーと適切な保管場所を使います。

レガシートークンの公式案内は移行の説明です。旧トークンを新規発行するページではありません。

旧コード1(対象名temp、動作保証なし)

旧コード2(対象名general、動作保証なし)

削除を検討するときの確認順序

必要な記録を残し、対象と権限を確認します。chat.deleteはメッセージ1件を指定するAPIで、チャンネル全体を無条件に消せるものではありません。

  1. まず、削除する理由と対象を確認する。記事の筆者は、ChatworkからSlackに転送したときに、#generalに大量のログが転送されたため、一括削除した。
  2. 削除してよいチャンネルか、ワークスペースの管理者などの許可を得ているかを確認する。他の人の投稿や、必要な記録が含まれていないかも確認する。
  3. 動作テストは、既存の重要なチャンネルではなく、テスト専用のチャンネルを作成して行う。
  4. トークンは、Slackアプリを作成し、ワークスペースにインストールして、必要なスコープ(chat:writeなど)を付けたものを使う。トークンは、パスワードと同じように扱い、他の人と共有したり、公開のリポジトリに置いたりしない。
  5. 削除できる範囲を確認する。ユーザートークンは、自分で削除できるメッセージ、Botトークンは、そのBotが投稿したメッセージだけが対象になる。権限がないメッセージは、エラー(cant_delete_messageなど)になる。
  6. 対象チャンネルID、投稿者、日時、メッセージIDを一覧で確定し、必要な記録を保存する。APIごとの制限とエラーを確認し、無期限の反復トリガーで削除しない。

迷ったときは、削除を実行せず、ワークスペースの管理者に相談してください。

件数が多い場合の注意点と運用のコツ

旧コードを1分おきに繰り返しても、廃止APIや権限不足は解消しません。定期実行の設定は行わず、まず取得範囲と失敗理由を確認します。

現行のconversations.historyにはページ送りと取得権限の条件があります。スレッド返信も含めた対象範囲を別途確認し、取得できた一覧だけで全件と判断しないでください。

保存期間の運用は、独自の削除スクリプトを定期実行する前に、管理者がSlackのデータ保持設定と契約プランを確認してください。保持設定による削除も元には戻せません。

なお、動作テストを行う際は既存の重要チャンネルではなく、テスト専用チャンネルを作成して検証することをおすすめします。

ChatworkやSlackへ通知を送る方法は、ほかにもあります。

よくある質問:Slackの投稿を一括削除するときのチェックリスト

Slackのチャンネルの投稿を、すべて削除できますか?

chat.deleteメソッドの公式の仕様では、ユーザートークンは、そのユーザーが自分で削除できるメッセージに限られ、Botトークンは、そのBotが投稿したメッセージだけが対象です。権限がないメッセージは、cant_delete_messageなどのエラーになります。他の人の投稿を、すべて削除できるとは限りません。

レガシートークンは、今も発行できますか?

Slackの公式ドキュメント(2026年10月12日確認)では、レガシーのテスタートークンは新規に作成できないと案内されています。推奨されているのは、Slackアプリを作成して、ワークスペースにインストールする方法です。

削除は、元に戻せますか?

Slack公式ヘルプではメッセージ削除は恒久的と説明されています。削除後の復元を前提にせず、実行前に対象と保存すべき記録を確認してください。

テストは、どこで行いますか?

既存の重要なチャンネルではなく、テスト専用のチャンネルを作成して行います。記事の筆者も、この方法をすすめています。

1回で、削除しきれないときは?

自動反復する前に、取得範囲・権限・API応答を確認します。chat.deleteはTier 3ですが、履歴取得の制限とは別です。429が返ったらRetry-Afterに従う設計が必要です。旧コードにはこの処理がありません。

トークンは、どう扱いますか?

パスワードと同じように扱い、他の人と共有したり、公開のリポジトリに置いたりしないでください。記事のコードを使う場合も、スクリプトの中のトークンを、公開しないよう注意します。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

仕事効率化のおすすめ書籍

仕事用PCの選び方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次