Slack からエクスポートしたデータの読み方

ワークスペースのデータをエクスポートするとメッセージ履歴とアップロードされたファイルへのリンクを含む .zip ファイルが届きます。  


エクスポートの種類

データエクスポートには以下の 2 種類があり、ワークスペースのオーナーと管理者によってのみ実行可能です。

  • Slack のすべてのプラン : Standard Export (スタンダードエクスポート) を使ったパブリックチャンネルのデータ (公開データ) のエクスポートが可能
  • プラスプラン : corporate export (コーポレートエクスポート) を使ったワークスペースの全データのエクスポートを申請可能

エクスポートを完了後、ワークスペースデータの .zip ファイルをダウンロードできます。エクスポートの種類により .zip ファイルに含まれるデータは以下のとおり異なります。

  Standard Export (スタンダードエクスポート) Corporate Export (コーポレートエクスポート)
チャンネル (channels.json)

ダイレクトメッセージ (dms.json)  

プライベートチャンネル (groups.json)  

アプリのアクティビティログ (integration_logs.json)

グループダイレクトメッセージ (mpims.json)  

メンバー (users.json)

全パブリックチャンネルのフォルダ

全プライベートチャンネルのフォルダ

 

全ダイレクトメッセージのフォルダ

 

注意 :ワークスペースに追加したファイルは Slack のエクスポートに含まれません。ワークスペースのファイルには、一連のファイルへのリンクからリダイレクトできます。


エクスポートファイルの内容

エクスポートした .zip ファイルを解凍すると、チャンネルまたはダイレクトメッセージごとにフォルダが表示されます。それぞれのフォルダ内には、その会話に投稿されたメッセージの JSON 形式のファイルが、日付順に整列されています。

会話の種類ごとに参照用ファイルが用意されています。パブリックチャンネルは channels.json ファイル、プライベートチャンネルは groups.json ファイル、ダイレクトメッセージは dms.json ファイルとなります。これらのファイルには、ユーザーとチャンネルの ID が含まれています。特定の会話を見つけるには、チャンネルと参照用ファイルの両方を使う必要があります。例えば、次のような方法で特定の会話を見つけることができます。

  1. users.json ファイルを開き、目的のユーザーを検索します。見つけたユーザーの ID をメモします。
  2. 次に channels.json、groups.json、または dms.json ファイルを開き、「メンバー」セクションで、該当する 2 つの ID (ユーザーとチャンネル) が含まれた会話を検索します。その会話のチャンネル名または会話 ID をメモします。
  3. メインのエクスポートフォルダ内で、メモしたチャンネル名または会話 ID がタイトルに使われているフォルダを見つけます。そのフォルダに、メッセージ送信日ごとに分類された複数の JSON ファイルが含まれています。

注意 : エクスポートファイルにフォルダが表示されるのは、エクスポートした日付範囲にメッセージがある場合のみです。例えば、30 日を経過したパブリックチャンネルのメッセージを削除するように保存ポリシーを設定していて、日付範囲に 31 日以上前を選択した場合は、エクスポートにパブリックチャンネルのフォルダは含まれません。

データの読み方 

JSON 形式のメッセージデータには以下のフィールドが含まれます。

  • "type" : 
    データがメッセージであることを表します
  • "user" : 
    このメッセージを送信したメンバーの ID を示します
  • "text" : 
    実際のメッセージが含まれます
  • "ts": 
    メッセージが投稿されたタイムスタンプを示します。 このタイムスタンプは、オンラインの UNIX 時間変換ツールを使って日付に変換できます。「UNIX タイムスタンプ」と検索すれば、いくつか候補が見つかります。

メッセージは、メッセージ送信日の日付のファイルに記録されます。以下、とてもシンプルなメッセージを例にあげます。

{
   "type": "message",
   "user":"U2147483697",
   "text":"皆さん、こんにちは",
   "ts":"1355517523.000005"
}

注意 :メッセージによっては “attachments” 値が含まれる場合があります。この値には、メッセージに添付されたオブジェクトのリストが含まれます。 

Tip :  "channel""user" フィールドの英数字の ID が何を意味するのかは、エクスポートに含まれるそれぞれの channels.json と users.json ファイルを参照してください。

編集されたメッセージデータの読み方

メンバーはチャンネルで共有したメッセージを編集することがあります。メッセージの変更ログを含むエクスポートの場合、投稿後に編集されたメッセージデータには以下の情報が記載された "edited" 値が含まれます。

  • "user"
    このメッセージを変更したメンバーの ID を示します
  • "ts"
    メッセージが編集されたタイムスタンプを示します。 このタイムスタンプは、オンラインの UNIX 時間変換ツールを使って日付に変換できます。「UNIX タイムスタンプ」と検索すれば、いくつか候補が見つかります。

このような編集は、編集が行われた日付のファイルに記録されます。以下に例をあげます。

{
        "type": "message",
        "user":"UTXHL6F8A",
        "upload": false,
        "ts":"1590101612.000000",
        "text":"これは編集後のメッセージです。",
        "previous": {
            "text":"これはオリジナルのメッセージです。",
            "blocks": [
                {
                    "type": "rich_text",
                    "block_id":"Bts",
                    "elements": [
                        {
                            "type": "rich_text_section",
                            "elements": [
                                {
                                    "type": "text",
                                    "text":"これはオリジナルのメッセージです。"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        "original_ts":"1590101603.000300",
        "subtype": "message_changed",
        "editor_id":"UTXHL6F8A",
        "blocks": [
            {
                "type": "rich_text",
                "block_id":"O+PJ",
                "elements": [
                    {
                        "type": "rich_text_section",
                        "elements": [
                            {
                                "type": "text",
                                "text":"これは編集後のメッセージです。"
                            }
                        ]
                    }
                ]
            }
        ]
    }


削除されたメッセージデータの読み方

メンバーはチャンネルで共有したメッセージを削除することがあります。削除ログを記録するように保存ポリシーを設定している場合、削除されたメッセージには、以下の情報が記載された "previous" 値が含まれます。

  • "text"
    削除されたメッセージのテキストが含まれます
  • "ts"
    メッセージが削除されたタイムスタンプを示します。 このタイムスタンプは、オンラインの UNIX 時間変換ツールを使って日付に変換できます。「UNIX タイムスタンプ」と検索すれば、いくつか候補が見つかります。

メッセージの削除は、メッセージ削除日の日付のファイルに記録されます。以下に例をあげます。

{
       "type": "message",
       "user":"UTXHL6F8A",
       "upload": false,
       "ts":"1590101824.000000",
       "text": "",
       "previous": {
           "text":"これは削除されたメッセージです。",
           "blocks": [
               {
                   "type": "rich_text",
                   "block_id":"ABSkQ",
                   "elements": [
                       {
                           "type": "rich_text_section",
                           "elements": [
                               {
                                   "type": "text",
                                   "text":"これは削除されたメッセージです。"
                               }
                           ]
                       }
                   ]
               }
           ]
       },
       "original_ts":"1590101818.000600",
       "subtype": "message_deleted",
       "editor_id":"UTXHL6F8A"
   }


メッセージのサブタイプ

Slack のメッセージにはメンバーが共有するものに加え、メッセージのサブタイプと呼ばれるアプリやボット、インテグレーションからのメッセージや、メンバーがチャンネルに参加した時に表示されるような Slack からのメッセージがあります。以下、メッセージのサブタイプの一覧です。

 

タイプ 説明
bot_message アプリやインテグレーションによる投稿メッセージ
me_message /me メッセージが送信された
message_changed メッセージが変更された
message_deleted メッセージが削除された
channel_join メンバーがチャンネルに参加した
channel_leave チャンネルからメンバーが抜けた
channel_topic チャンネルのトピックが更新された
channel_purpose チャンネルの目的が更新された
channel_name チャンネル名が変更された
channel_archive チャンネルがアーカイブされた
Channel_unarchive アーカイブされたチャンネルが復元された
group_join メンバーがグループに参加した
group_leave メンバーがグループから抜けた
group_topic グループのトピックが更新された
group_purpose グループの目的が更新された
group_name グループ名が変更された
group_archive グループがアーカイブされた
group_unarchive アーカイブされたグループが復元された
file_share ファイルがチャンネルで共有された
file_reply ファイルに返信が追加された
file_mention チャンネルでファイルがメンションされた
pinned_item チャンネルにアイテムをピン留めした
unpinned_item チャンネルでアイテムのピンが外された

 

ブックマークに登録したアイテム、ピン留めしたアイテム、絵文字リアクション

メッセージにインタラクトした人がいた場合は、それを示す追加プロパティが含まれます。

  • “is_starred”: true, と表示される場合には、メンバーによってメッセージがブックマークに登録されていることを示します。メッセージが誰のブックマークにも登録されていない場合は、この値は表示されません。
  • どこかにメッセージがピン留めされている場合には、“pinned_to” の横にロケーションの ID が表示されます。
  • “reactions” が存在する場合、それまでにメッセージに追加されたすべてのリアクションに関し、リアクション名 (“name”)・リアクションしたメンバー数 (“count”)・リアクションしたメンバーのリスト (“users”) の情報がリストアップされます。
{
   "type": "message",
   "channel":"C2147483705",
   "user":"U2147483697",
   "text":"皆さん、こんにちは",
   "ts":"1355517523.000005",
   "is_starred": true,
   "pinned_to": ["C024BE7LT", ...],
   "reactions": [
       {
           "name": "astonished",
           "count":3,
           "users": [ "U1", "U2", "U3" ]
       },
       {
           "name": "facepalm",
           "count":1034,
           "users": [ "U1", "U2", "U3", "U4", "U5" ]
       }

注意 :"reactions" 値には、リアクションしたメンバー全員が必ず含まれるとは限りませんが、"count" 値には実際にリアクションしたユーザー全員の数が表示されます。


Slack のファイル検索用リンク

ワークスペースのファイルは Slack のエクスポートファイルに含まれませんが、エクスポートファイルのメッセージ履歴 JSON ファイルに含まれた一連のファイルリンクからワークスペースのファイルにリダイレクトできます。これらのリンクを JSON ファイルからコピーしてブラウザに貼り付けると、ファイルを開くことができます。

特定のファイルを見つける方法は以下のとおりです。

  1. ファイルが共有された会話のフォルダを開きます。
  2. ファイルが共有された日付と対応する JSON ファイルを見つけます。
  3. ファイルが共有されたメッセージの詳細の “files:” セクションにファイルへのリンクがあります。

注意 :ファイル、またはファイルを共有していたチャンネルやワークスペースを削除してしまうと、エクスポート内のファイルへのリンクを使ってファイルにアクセスできなくなります。