Slack의 개인 채널의 Export

TL;DR


https://qiita.com/ynaito/items/8f2f1de8426fe1dcf7c5
https://qiita.com/yomori/items/d9242129ebbae1f1c6ff
여기와 여기 정보를 참고하십시오. 백업은 단서에 포함된 정보를 포함합니다.
이전 링크를 참조하여 Slack App을 설정하고 다음 코드를 스프레드시트의 스크립트 편집기에 복사하면 됩니다.
var OAuthAccessToken = "{OAuth Access Token}"; 
var channelID = "{チャンネルID}";

function main() {
  var fetchUrl = 'https://slack.com/api/conversations.history?token=' + OAuthAccessToken + '&channel=' + channelID + '&limit=1000';
  var res = UrlFetchApp.fetch(fetchUrl);
  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?token=' + OAuthAccessToken + '&channel=' + channelID + '&ts=' + v.thread_ts;
        var reply = UrlFetchApp.fetch(fetchUrl);
        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());
}

배경.


어떤 슬랙 채널의 정보를 백업(내보내기)하고 싶은 장면이 있어요.
  • 이 채널은 사유 채널
  • 이다.
  • 본사의 슬랙 계획의 표준 계획은 개인 채널을 내보낼 수 없습니다
  • 개인 채널은 공용 채널로 변경할 수 없습니다.
    이러한 상황 때문에 Slack이 준비하는 방법은 백업할 수 없습니다.
  • 해본 일


    처음에는 거의 다 썼지만 ynaito의 글을 참고해 정보를 얻었는데 결과적으로 단서를 얻지 못한 내용이 있어 yomori의 글을 참고해 그 부분을 추가했다.
    진짜 이게 다야.
    내가 뭘 했더라면 conversations.history 시간순으로 내림차conversations.replies 승차순으로 돌아왔기 때문에 전체적으로 승차순으로 씹기 위해reverse()네.

    좋은 웹페이지 즐겨찾기