【SlackAPI】プライベートチャンネルのトーク履歴をGoogleスプレッドシートにバックアップする

2022-11-12
hero画像

💫 はじめに

この記事ではGAS(Google App Script)を使ってSlackのプライベートチャンネルのトーク履歴を保存する方法を紹介します。

💫 ざっくり用語説明

⭐︎ GAS:
Google App Scriptの略。Googleが提供するプログラミング言語であり、Google関連のサービスとの連携が容易。ベースはJavaScript。

⭐︎ Slack:
コミュニケーションツール。

💫 モチベーション

Slack無料プランの変更(2022/09/01)によってチャット履歴を保存したいと言う需要が増加したが、ネット上ではプライベートチャンネルの履歴保存に関する記事が少ないです 。
このため、本記事をメモとして残しておきました。

💫 公式ドキュメント

SlackAPI: https://api.slack.com/methods/conversations.list

💫 準備

Googleアカウントの作成

💫 環境

  • Mac Book Pro (OS: Monterey)

💫 トーク履歴をスプレッドシートに保存する方法

パブリックチャネルのみのトーク履歴をスプレッドシートに保存する方法はWeb上で様々な人が公開している。
今回は
https://best-cloud.jp/slack-message-log-auto-save-gas/
を参考とする。

大まかな流れは

  1. ウェブページでSlackAPI用のOAuthトークン取得
  2. GoogleDriveで保存用のフォルダ作成
  3. Google Apps Script実行
  4. ドライブ確認
  5. 自動保存の設定 (※optional) となる。

本記事では、3番の手順で実行するスクリプトの一部を改変すことで、プライベートチャンネルの履歴も保存できるようにする。

💫 Script改変

チャンネル情報の取得に、SlackAPIのconversations.listメソッドを使用しています。
公式ドキュメントによると、デフォルトではパブリックチャンネルの情報しか取得できないようです。
conversations_list_API_method

このため、オプションを付け足します。
↓ 元スクリプト

// チャンネル情報取得
p.requestChannelInfo = function () {
var response = this.requestAPI('conversations.list');
...

↓ 改変スクリプト

  // チャンネル情報取得
  p.requestChannelInfo = function () {
    let options = {'types': "public_channel,private_channel"};  // privateチャネルも取りたいので追加
    var response = this.requestAPI('conversations.list', options);

※ 元のページで行数が表示されていないので、このブログでも行数表示なしです。ごめんなさい><

これでプライベートチャンネルの履歴も残せるようになりました!

💫 追記(シートをソートする)

チャンネルの内容を記録したシートの順番がバラバラのままだと使いにくいですね…
新たにシートをソートする方法を紹介する記事 を作成しました!
こちらも是非ご確認ください!


©2022.うりゅAll Rights Reserved.