【コピペ】SlackチャンネルのメッセージをGASで一気に削除する方法

「Slackチャンネルのメッセージを一気に削除したい」
「generalチャンネルのメッセージが新しい人に見られたくない」

この記事は、そんな方へ向けて書いています。

先取り結論

  • generalチャンネル自体は削除できないし、プライベートにもできない
  • チャンネルへの投稿をまとめて削除する機能はSlackには無い
  • プログラミングができない人でも、GASへのコピペで削除システムを実行できる(5分で消せます)
  • 他記事に無い「投稿への返信」 の削除も対応!

Slackチャンネルの投稿を一気に削除する手順

generalチャンネルは削除できませんし、プライベートチャンネルに設定することもできません。

そこで、チャンネルへの投稿を一気に削除するスクリプトを公開します。

一つ一つ手順を追って説明していますし、コード部分はコピペで問題ありません。今回のコードは投稿への返信投稿の削除も対応しております。

簡単な流れは以下の通り。

  1. Slack内でアプリを作成
  2. アプリに権限を付与
  3. ワークスペースにアプリをインストール
  4. アプリのトークン、チャンネルIDを控える
  5. GASを開いてコードをコピペ
  6. GASの認証

6ステップぐらいありますが、実際は5分ほどで完了します。

Slack内でアプリを作成

まずはSlack(ブラウザ)にアクセスし、Slack apiの画面に行きましょう。

「Create New App」をクリック。

「From scratch」を選択します。

アプリ名を入力し、削除したいチャンネルのあるワークスペースを選択します。
※Workspaceが一つの場合は、そのWorkspaceを選択してOKです。

「Create App」をクリックしましょう。

アプリに権限を付与

続いて、作成したアプリに閲覧権限、削除権限を付与します。

左側メニューの「OAuth 6 Permissions」をクリックしましょう。

「Scopes」の欄で、User Token Scopesの「Add an OAuth Scope」をクリックしてください。

入力欄に「chat」や「channels」と打ち込むと、候補が出てきますので、その中から以下の2つの権限を追加してください。

  • chat:write
  • channels:history

ワークスペースにアプリをインストール

最後に、作成したアプリをワークスペースに追加します。

「Install App」をクリックしましょう。

さらに「Install to Workspace」をクリック。

今回はベストクラウドの運営会社である株式会社JEALARTのワークスペースに、アプリを追加してみます。

「許可する」をクリックしてください。

アプリのトークン、チャンネルIDを控える

上記の画面が出てくるので、User OAuth Tokenをコピーして、メモ帳に貼り付けておいてください。

また、メッセージ削除対象のチャンネルIDもコピーしておきます。

Slackアプリ上で、チャンネル名をクリックしてください。

管理画面の一番下にチャンネルIDが表示されています。

こちらもコピーしてメモ帳に貼り付けておいてください。

これで、事前準備は完了です。

今回はこちらのチャンネルを削除します。

GASを開いてコードをコピペ

GAS上にスクリプトを貼り付けます。

【初心者の方向け:GASの開き方】

  1. Google Spreadsheetを開く
  2. 拡張機能>Apps Scriptを選択

このような画面が出てくるので、ひとまず全てテキストを削除してください。

その上で、以下のコードを貼り付けてください。

function delete_slack_message() {
// user_token, channel_idを記載
const user_token = "xoxp-XXXXXXXXX";
const channel_id = "XXXXXXXXXXXX";

const headers = {
'Authorization': 'Bearer '+ user_token
};
const options = {
'headers': headers,
'followRedirects': false,
'muteHttpExceptions': false
};
// 対象チャンネルのメッセージ一覧を取得(100件)
const url = "https://slack.com/api/conversations.history?channel=" + channel_id;
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
const messages = data.messages

for (let message of messages) {
// 返信を1つずつ削除
while(message.latest_reply){
let url = "https://slack.com/api/chat.delete?channel=" + channel_id + "&ts=" + message["latest_reply"];
UrlFetchApp.fetch(url, options);
Utilities.sleep(1000);

// latest_replayを削除後のメッセージを取得
url = "https://slack.com/api/conversations.history?channel=" + channel_id + "&latest=" + message["ts"] + "&inclusive=true&limit=1";
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
message = data.messages[0]
}
const url = "https://slack.com/api/chat.delete?channel=" + channel_id + "&ts=" + message["ts"];
UrlFetchApp.fetch(url, options);
Utilities.sleep(1000);
}
}

そして、「"」で囲まれた部分は先程控えておいた文字列に書き換えます。

const user_token = "xoxp-XXXXXXXXX";
const channel_id = "XXXXXXXXXXXX";

その上で、実行ボタン(▼)をクリックしてください。

GASの認証

GoogleAppsScriptが実際に実行しますよ、という認証を行います。

「権限を確認」をクリックしてください。

さらに「このアプリはGoogleで確認されていません」と表示されるので、まずは「詳細」をクリック。

「安全ではないページに移動」をクリックします。

Googleの認証方式として、このようにビビらせて来ますが、基本的に自分の作成したスクリプトであれば問題ありません。
詳細は以下を確認してください。

GAS実行時に「このアプリはGoogleで確認されていません」と出る原因と対処法

「Google Apps Scriptを実行しようとしたら、危険サイトのような警告が出た」 「確認されていません、以降の進め方がわからない」 「アプリを承認していいのかどうかわからない」 この記事は、 ...

実行ログが表示されました。

上記のように、メッセージが削除されました!

おめでとうございます!

Slack投稿削除システムの注意点・ポイント

  • messageは一度に100件取得制限有りのため、メッセージが残ったら再度実行する
  • 大量のmessage削除前提なら、繰り返し処理入れてもいいかもしれない
  • 定期的に消したいならGASのトリガで行うのもあり
  • slack apiには頻度制限(rate limit)があるが、とりあえず1s待って問題無し
  • 現状message数の上限100件があるため、起きることはないと思うが、GAS実行時間制限に引っかかる場合は再度実行する

公開したコードのポイントは、一度に削除できるメッセージは100件まで、ということです。

メッセージが残っていたら、再度実行することでさらにメッセージを削除できます。

Slackチャンネル削除システムのポイント

  • 1度に100件まで削除できる
  • トークンとチャンネルIDの書き換えを忘れずに!
  • 自己責任でお願いします

-Slack(スラック)

© 2022 bestcloud