如何读取 Slack 数据导出

一旦你已导出工作区数据,便可以下载 ZIP 文件来访问消息历史记录和文件链接。  


导出格式

导出格式取决于运行的导出类型

  • 仅限公共频道:数据将以 JSON 格式导出。
  • 所有频道和对话:数据将以 JSON 格式导出。
  • 单个用户的频道和对话:数据可以 JSON 或 TXT 格式导出。


你的导出文件将包含:

JSON 文件

TXT 文件

导出完成后,你将会下载一个 ZIP 文件,其中包含你的工作区数据以及可指引回到工作区文件的一系列文件链接。根据你的导出类型,你 ZIP 文件将包括以下内容:

  仅限公共频道 所有频道和对话
频道 (channels.json)

私信 (dms.json)  

私人频道 (groups.json)  

应用活动日志 (integration_logs.json)

组私信 (mpims.json)  

成员 (users.json)*

每个公共频道的文件夹

每个私人频道的文件夹

 

每条私信的文件夹

 

每个画板的网址 (canvases.json)**

*如果你从 Enterprise Grid 组织导出数据,此文件夹将命名为 org_users.json
**如果你仅从公共频道导出数据,此文件夹将仅包含公共频道中共享的画板。

小窍门:在企业网格套餐中,你可以选择导出整个组织或某个特定工作区的数据。特定工作区的导出包括所选工作区的公共频道和私人频道,但不包括跨工作区频道

如果选择以 TXT 格式导出单个用户对话的数据,则在导出完成后,将下载一个 ZIP 文件,其中包含所选用户发送的所有消息和文件。ZIP 文件将包含三个文件夹:

  • 频道
  • 私信
  • 文件

每个文件夹中都有一组 TXT 文件,其中包含单个用户在你所选日期范围内的对话或发送文件的历史记录。

注意:如果你在导出中应用了日期范围,Slack 将返回用户参与过的所有对话,即使用户在指定日期内没有在该对话中发送消息。在此情况下,不会在导出文件的频道中显示任何消息。


在导出文件中导航

JSON 文件

TXT 文件

当你打开导出 ZIP 文件时,每个频道或私信将有自己的文件夹。每个文件夹将包含来自对话的消息,按日期整理在单独的 JSON 文件中。

你将看到不同类型对话的参考文件:channels.json 文件(公共频道)、groups.json 文件(私人频道)和 dms.json 文件(私信)。这些文件将包含用户和频道 ID。你需要同时使用频道和参考文件来查找特定的对话。例如,要查找特定的消息,你可以进行以下操作: 

  1. 打开 users.json 文件并搜索相关的用户。记下他们的 ID。 
  2. 下一步,打开 channels.json、groups.json 或 dms.json 文件,并在成员分区中搜索包含这两个 ID 的对话。请记下该对话的频道名称或对话 ID。 
  3. 在主导出文件夹中,找到以该频道名称或对话 ID 作为标题的文件夹。你将在该文件夹中找到多个 JSON 文件——每个消息发送日期都对应一个文件。

注意:只有当导出的日期范围存在消息时,才会在导出文件中包含相应的文件夹。例如,如果你的数据留存政策设置为 30 天后删除公共频道中的消息,而你选择 31 天前的日期范围,则在导出中不会包含公共频道的文件夹。

你的 ZIP 文件的每个文件夹将包含来自你的工作区的不同数据。频道文件夹将包含单个用户所属的每个频道和组私信的 TXT 文件。私信文件夹将包含单个用户所属的每个一对一私信的 TXT 文件。

对话的TXT 文件将以频道命名,或以私信中成员的用户名命名。例如,你的 #全体频道的数据将在全体.txt中。私信的数据可能会命名为类似 mcollins-jjordan.txt

要查看特定对话的消息,你可以执行以下操作:

  1. 打开频道私信文件夹。
  2. 打开你想要查看的频道或私信的 TXT 文件。

TXT 文件打开之后,你将在消息标题下看到对话消息历史记录。消息历史记录将包括你导出的单个用户和对话中的任何其他用户发送的消息。

注意:已编辑和已删除的消息仅在你的数据留存政策设置为将其保留时,才会显示在你的导出文件中。


如何读取消息 

JSON 文件

TXT 文件

每条消息将包括以下字段:

  • "type": 
    表示消息中的数据
  • "user": 
    发送消息的成员的 ID
  • "text": 
    消息的实际文本
  • "ts": 
    消息发布的时间戳。你可以使用任何在线 unix 时间转换器来转换时间戳。

消息将被记录在消息发送日期对应的日期文件中。以下是一个非常简单的消息的示例:

{
   "type": "message",
   "user":"U2147483697",
   "text":"你好,世界!",
   "ts":"1355517523.000005"
}

注意:某些消息可能还含有“附件”值。此值包含附加到消息的对象列表。 

小窍门: 你可通过参考 channels.json 和 users.json 文件来转换“频道”“用户”字段的字母数字 ID。

消息子类型

除了成员在 Slack 中共享的消息以外,还有消息子类型——由应用、机器人或集成发布的消息,或者某位成员加入频道时你所看到的消息。以下是消息类型的完整列表:

 

类型 描述
bot_message 消息是由应用或集成发布的
me_message 发送了一条带有 /me slash 命令的消息
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" 值将始终显示使用了回复的次数。

消息将按照其在对话中的发送顺序显示。消息包含以下内容:

  • 消息发布的时间戳(GMT 时间)。
  • 发送消息的人员的 Slack 用户名。
  • 消息的内容。

以下是一个简单的消息的示例:

[2020-04-20 13:47:27]  欢迎加入销售团队频道!我们的团队正以前所未有的速度成长

你的导出文件将不会区分消息列中的消息和发送到频道的消息。消息列中的所有消息都会显示在对话流中。


如何读取已编辑的消息

JSON 文件

TXT 文件

成员可能会编辑他们共享到频道的消息。如果你的导出选项支持编辑日志,已编辑的消息将带有一个“已编辑”值,它包含以下信息:

  • "user"
    作出更改的成员的 ID。
  • "ts"
    消息编辑的时间戳。你可以使用任何在线 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":"你好,这是编辑后的消息。"
                            }
                        ]
                    }
                ]
            }
        ]
    }

已编辑的消息将显示在对话的 TXT 文件末尾的消息编辑标题下。已编辑的消息包含以下内容:

  • 消息编辑的时间戳(GMT 时间)。
  • 更新消息的人员的 Slack 用户名。
  • 原始消息发送的时间戳。
  • 编辑前的原始消息的内容。已编辑的消息将显示在对话流的消息分区中。

示例如下:

[2020-04-20 13:47:27]  更新 [2020-04-20 13:47:09]  欢迎加入销售团队频道!


如何读取已删除的消息

JSON 文件

TXT 文件

成员可能会删除他们共享到频道的消息。如果你的数据留存政策支持删除日志,已删除的消息将带有一个“之前”值和以下信息:

  • "text"
    已删除消息的文本。
  • "ts"
    消息删除的时间戳。你可以使用任何在线 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"
   }

已删除的消息将显示在对话的 TXT 文件末尾的消息编辑标题下。已删除的消息包含以下内容:

  • 消息删除的时间戳(GMT 时间)。
  • 删除消息的人员的 Slack 用户名。
  • 原始消息发送的时间戳。
  • 原始消息的内容。

以下是一个已删除消息的示例:

[2020-04-20 13:47:47]  删除 [2020-04-20 13:47:42]  上周我们完成了 X 销售额!


如何查看文件

JSON 文件

TXT 文件

Slack 导出的 JSON 格式文件不包含来自工作区的任何文件。它们包括一系列可指引回到工作区文件的文件链接,位于导出文件的消息历史记录 JSON 文件中。要打开文件,请从 JSON 文件中复制这些文件链接,并将它们粘贴到浏览器中。

以下是找到特定文件的步骤:

  1. 打开共享了该文件的对话所对应的文件夹。
  2. 找到与文件共享日期对应的 JSON 文件。
  3. 你将在共享过它的消息详情中看到文件链接,位于 “files:” 部分。

注意:如果你删除了一个文件,或者删除了共享过它的频道或工作区,那么该文件将无法再通过导出中的文件链接进行访问。

你的 ZIP 文件的文件文件夹包含了你在导出中选择的单个用户发送的文件。文件标题将显示在你的频道私信 TXT 文件中的对话流中,示例如下:

[2020-04-20 13:47:27] jjordan 共享了文件 F01243S814M

以下是找到特定文件的步骤:

  1. 打开共享了该文件的对话所对应的 TXT 文件。
  2. 在消息历史记录中找到你要打开的文件,并记下相应的文件标题(如:F01243S814M)。
  3. 打开“文件”文件夹并选择要打开文件的文件标题。


如何查看画板

JSON 文件

TXT 文件

以 JSON 格式导出的 Slack 文件将包含一个特定文件,其中含有用于在 HTML 下载所有可用画板的链接。

画板

查找画板的方法如下:

  1. 打开 canvases.json,然后搜索画板标题。
  2. 在与画板相对应的详细信息中找到 url_private_download
  3. 将这个网址粘贴到浏览器中,然后下载画板并读取内容。
  {
    "id":"F05UA7XQXHS",
    "created":1695846651,
    "name":"This_canvas_is_shared_in_General",
    "title":"此画板已在全体中共享",
    "mimetype": "application/vnd.slack-docs",
    "filetype": "quip",
    "pretty_type":"Canvas",
    "user":"U018Y4QJK0E",
    "editable": true,
    "size":48,
    "mode": "quip",
    "is_public": true,
    "is_tombstoned": false,
    "public_url_shared": false,
    "date_delete":0,
    "url_private_download": "https://files.slack.com/files-pri/T019B299WNQ-F05UA7XQXHS/download/canvas?t=xoxe-1317077336772-EXAMPLE-TOKEN-INFO",
    "shares": [
      {
        "team":"T019B299WNQ",
        "channel":"C019UMH0P40"
      }

频道画板

查找频道画板的方法如下:

  1. 打开频道画板所属的对话文件夹。
  2. 找到 canvas_in_the_conversation.json,其中包含 url_private_download
  3. 将这个网址粘贴到浏览器中,然后下载画板并读取内容。
{
    "id":"F05U12FNWT0",
    "created":1695845524,
    "name":"GENERAL_CHANNEL_CANVAS",
    "title":"全体频道画板",
    "mimetype": "application\/vnd.slack-docs",
    "filetype": "quip",
    "pretty_type":"Canvas",
    "user":"USLACKBOT",
    "editable": true,
    "size":17,
    "mode": "quip",
    "is_public": true,
    "is_tombstoned": false,
    "public_url_shared": false,
    "date_delete":0,
    "url_private_download": "https:\/\/files.slack.com\/files-pri\/T019B299WNQ-F05U12FNWT0\/download\/canvas?t=xoxe-1317077336772-EXAMPLE-TOKEN-INFO",
    "shares": [
        {
            "team":"T019B299WNQ",
            "channel":"C019UMH0P40"
        }

画板上的评论

画板上的评论将导出到导出文件中的相应文件夹。以下是将导出文件中的评论与其画板相关联的方法:

  1. 打开 file_conversations.json,然后搜索画板标题。
  2. "name": 字段中,记下 FC ID 或你要查看评论的画板(例如:FC:F05UA7XQXHS)。
  3. 返回导出文件,找到与 FC ID 匹配的文件夹。
  4. 打开 FC 文件夹,可查看在画板上发表的评论。评论将按发表日期排序
{
    "id":"C05UA7XQXHS",
    "name":"FC:F05UA7XQXHS:此画板已在全体中共享",
    "created":1695846691,
    "creator":"USLACKBOT",
    "is_archived": false,
    "members": [
        "U018Y4QJK0E"
    ],
    "topic": {
        "value": "",
        "creator": "",
        "last_set":0
    },
    "purpose": {
        "value": "",
        "creator": "",
        "last_set":0
    }

如果目标用户与画板进行交互,或者目标用户是共享画板所在频道中的成员,则 TXT 导出将包含以下与画板相关的文件和文件夹:

  • canvas_in_the_conversation.txt
    该文件可在每个对话文件夹中找到,其中包含用于下载该对话画板的链接。
  • 画板
    该文件夹包含目标用户可访问的各个画板中的唯一子文件夹。在文件夹中,你可以访问 HTML 格式的画板。
  • 文件
    该文件夹包含各个画板的唯一子文件夹,这些画板含有目标用户可访问的嵌入文件。

以下是找到特定画板的步骤:

  1. 打开画板文件夹,查看目标用户可以访问的所有画板的列表,这些画板被整理到了各个文件夹中。
  2. 打开要查看的画板中的文件夹,然后打开画板的 HTML 文件。

注意:如果消息链接显示为卡片或某位用户被提及,你还需要参考 FC 文件夹来查找画板中嵌入的文件或网站链接。