👌

slackのバックアップ

2022/07/21に公開約2,000字

何の記事か?

slackの諸々バックアップ方法についてです。

チャンネルメッセージ

良い感じですが、自分の環境だと一部バックアップ取れないチャンネルがありました。

https://www.takameron.info/post/slack_dump/

自分はこれを採用しました。(サンプルコードを一部改変させる必要あり)

https://zenn.dev/nariakiiwatani/articles/8ed4a7bb0d5d0b

改変後コード

var OAuthAccessToken = "${OAuthAccessToken}"; 
var channelID = "${ChannelID}";
var options = {
  headers: { 'Authorization': 'Bearer '+ OAuthAccessToken }
}

function main() {
  var fetchUrl = 'https://slack.com/api/conversations.history?channel=' + channelID + '&limit=1000';
  var res = UrlFetchApp.fetch(fetchUrl, options);
  res = JSON.parse(res);

  var messages = [];
  do {
    var newMessages = [];
    res.messages.forEach(function (v) {
      if('thread_ts' in v) {
        var fetchUrl = 'https://slack.com/api/conversations.replies?channel=' + channelID + '&ts=' + v.thread_ts;
        var reply = UrlFetchApp.fetch(fetchUrl, options);
        reply = JSON.parse(reply);
        newMessages = newMessages.concat(reply.messages.reverse());
      }
      else {
        newMessages.push(v);
      }
    });
    newMessages = newMessages.map(function (v) {
      return [
        v.client_msg_id,
        v.type,
        v.text,
        v.user,
        v.ts,
        v.reply_count || 0,
        v.reply_users_count || 0,
      ];
    });
    messages = messages.concat(newMessages);
  } while (res.has_more);

  SpreadsheetApp
    .getActiveSheet()
    .getRange('A2:G' + (messages.length+1))
    .setValues(messages.reverse());

  var title =
    [
      [
      'client_msg_id',
      'type',
      'text',
      'user',
      'ts',
      'reply_count',
      'reply_users_count'
      ]
    ]
  SpreadsheetApp
    .getActiveSheet()
    .getRange('A1:G1')
    .setValues(title);
}

おまけ

  • チャンネルのIDを一括で取得する
curl 'https://slack.com/api/conversations.list?limit=1000&types=public_channel,private_channel,mpim,im&pretty=1' \
-H 'Authorization: Bearer ${AOuth Token}'  | jq ".channels[] | { name: .name, id: .id}"

ファイル

良い感じ

https://dounokouno.com/2020/02/08/slack-workspace-uploaded-files-download-all-ruby-script/

Discussion

ログインするとコメントできます