Slackでメッセージを個別に削除する方法



Slackでメッセージを一括で削除する方法
Slackでメッセージを一括で削除する方法を説明します。Slackにはメッセージ一括削除機能などは搭載されておらず、Slackbotにもそういった機能はないので「Google Apps Script(GAS)」を用います。まずは下記リンク先にアクセスしてアカウントのトークンを取得しておきましょう。

続いて、Googleドライブを開きます。「新規」ボタンからメニューの「その他」→「Google Apps Script」をクリックしましょう。あとは下記記述を入力してスクリプトを作成して、ファイル上からメッセージ一括削除を行うチャンネル・開始日・終了日を設定して削除しましょう。
function delete_slack() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); //アクティブシート
var check_box = sheet.getRange("B12").getValue(); //チェックボックスのセルの値
// 判定(チェックが付いていたら実行する)
if (!check_box) {
return false;
}
// Slackのトークン
var token = "xoxp-XXXXXXXX-XXXXXXXX-XXXXX";
// チャンネルIDを取得
var channel_id = get_channel_id(sheet, token);
// 開始日時のUNIXタイムスタンプを取得
var start_ts = get_time_stamp(sheet, "C6", "E6", "G6", "00:00:00");
// 終了日時のUNIXタイムスタンプを取得
var end_ts = get_time_stamp(sheet, "C8", "E8", "G8", "23:59:59");
// 対象チャンネル&期間のメッセージ情報を取得
var post_info = get_post_info(token, channel_id, start_ts, end_ts);
// 対象メッセージを削除
var delete_complete = delete_target_slack(token, channel_id, post_info);
// delete_completeがtrueだったら削除完了と表示し、チェックボックスを外す
if (delete_complete) {
// ポップアップを表示
Browser.msgBox("該当のSlackを削除しました!");
// チェックボックスからチェックを外す
sheet.getRange("B12").setValue(false);
}
}
// 〜チャンネル準備ゾーン〜(channel_idを取得する)
function get_channel_id(sheet, token) {
var target_channel = sheet.getRange("B4").getValue(); //対象チャンネルのセルの値
var url = "https://slack.com/api/channels.list?token=" + token;
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var list = JSON.parse(json);
// チャンネル一覧から対象チャンネルのIDを取得
for (var i = 0; i < list.channels.length; i++) {
if (list.channels[i].name == target_channel) {
return list.channels[i].id;
}
}
}
// 〜タイムスタンプ準備ゾーン〜(対象期間のUNIXタイムスタンプを取得する)
function get_time_stamp(sheet, y_cell, m_cell, d_cell, time) {
var year = sheet.getRange(y_cell).getValue(); //年のセルの値
var month = sheet.getRange(m_cell).getValue(); //月のセルの値
var day = sheet.getRange(d_cell).getValue(); //日のセルの値
var date = year + "/" + month + "/" + day + " " + time; //変換準備
// UNIXタイムスタンプに変換
return Date.parse(date) / 1000;
}
// 〜メッセージ準備ゾーン〜(対象チャンネル&期間のメッセージ情報を取得する)
function get_post_info(token, channel_id, start_ts, end_ts) {
var url = "https://slack.com/api/channels.history?token=" + token + "&channel=" + channel_id + "&oldest=" + start_ts + "&latest=" + end_ts;
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var list = JSON.parse(json);
return list.messages;
}
// 〜メッセージ削除ゾーン〜(対象メッセージを削除してtrueを返す)
function delete_target_slack(token, channel_id, post_info) {
// 対象のメッセージ情報を回す
for (var i = 0; i < post_info.length; i++) {
// メッセージの投稿者が自分だったら削除
if (post_info[i].user == "ユーザーID") {
var url = "https://slack.com/api/chat.delete?token=" + token + "&channel=" + channel_id + "&ts=" + post_info[i].ts;
UrlFetchApp.fetch(url);
}
}
return true;
}
使用するAPIは下記の3点です。
Slackでメッセージを編集する方法

