Slackでメッセージを一括削除・編集する方法を紹介!

Slackでメッセージを一括削除・編集する方法を紹介!

Slackでチャンネル内のメッセージを一括削除したいという場合には、スクリプトを組んで削除することが可能です。また、送信したメッセージを編集することもできます。この記事ではSlackでメッセージを一括削除する方法や、編集する方法をご紹介しています。


目次[非表示]

  1. Slackでメッセージを個別に削除する方法
  2. Slackでメッセージを一括で削除する方法
  3. Slackでメッセージを編集する方法

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

メッセージにマウスカーソルを乗せて「その他」をクリック
Slackのチャンネルやダイレクトメッセージで送信したメッセージを個別に削除したい場合は、削除したいメッセージにマウスカーソルを乗せてボタン一覧の「その他」をクリックしましょう。
「メッセージを削除する」をクリック
メニューが表示されるので、「メッセージを削除する」をクリックしましょう。
「このメッセージを本当に削除しますか?削除後は元に戻すことはできません。」の画面で「削除する」ボタンをクリック
「このメッセージを本当に削除しますか?削除後は元に戻すことはできません。」と注意文が表示されます。「削除する」ボタンをクリックすると、メッセージが削除されますよ。

Slackでメッセージを一括で削除する方法

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

Legacy tokens | Slack
Googleドライブの「新規」ボタンからメニューの「その他」→「Google Apps Script」をクリック

続いて、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点です。

channels.list method | Slack
CHANNELS.HISTORY METHOD | SLACK
chat.delete method | Slack

Slackでメッセージを編集する方法

メッセージにマウスカーソルを乗せて、「その他」をクリック
Slackでメッセージを編集する方法は、メッセージの一括削除よりも簡単です。編集したいメッセージにマウスカーソルを乗せて、ボタン一覧の「その他」をクリックしましょう。
「メッセージを編集」をクリック
メニューが表示されるので、「メッセージを編集」をクリックしましょう。メッセージが入力画面に切り替わるので、編集を行ったら「変更を保存する」ボタンをクリックすればメッセージを編集して反映させることができますよ。

関連記事