# 导出事件数据有点痛苦，电子邮件地址会很有用

**URL:** https://meta.discourse.org/t/export-event-data-is-a-bit-painful-and-email-addresses-would-be-useful/242153
**Category:** UX
**Tags:** events
**Created:** [2022年十月18日 01:06 UTC](https://meta.discourse.org/t/export-event-data-is-a-bit-painful-and-email-addresses-would-be-useful/242153 "2022-10-18T01:06:49Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [2022年十月18日 01:06 UTC](https://meta.discourse.org/t/export-event-data-is-a-bit-painful-and-email-addresses-would-be-useful/242153/1 "2022-10-18T01:06:49Z")

</div>

使用 [Creating and managing events](https://meta.discourse.org/t/discourse-event/149964) 的功能，我觉得下载和使用 ![image](https://global.discourse-cdn.com/meta/original/4X/a/7/1/a71858bf12a6311edb4e81f4c6eee35d2cf5e53f.png) 非常麻烦。

目前它使用与用户导出类似机制，提供给您：

1. 一个 zip 文件，通过私信发送给对该帖子有编辑权限的人。
2. 提供这些字段：  
`username	status	first_answered_at	last_updated_at`

### 建议 1

从模态框中提供直接的 .csv 下载。

从用户角度来看，这将简单得多。

### 建议 2

在此下载中报告主要电子邮件（或提供此选项）。

这将允许轻松导出参与者，以便在活动的其他相关目的中使用。

目前我有一个数据探索器查询可以满足此需求，但需要大量调整才能让活动组织者（即发帖人）访问它：

```sql
-- [params]
-- int :post_id

WITH e AS (
  SELECT email, user_id
  FROM user_emails u
  WHERE u.primary = true
)

SELECT dpei.user_id, email, status, notified
FROM discourse_post_event_invitees dpei
JOIN e ON e.user_id = dpei.user_id
WHERE dpei.post_id = :post_id
ORDER BY status, email

```

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [2025年七月31日 04:39 UTC](https://meta.discourse.org/t/export-event-data-is-a-bit-painful-and-email-addresses-would-be-useful/242153/2 "2025-07-31T04:39:26Z")

</div>

今天我又遇到了这个问题，我们的一位管理员询问如何查看谁点击了“参加”。

我们遇到的用户体验问题是，点击“导出事件”似乎并没有实际_起作用_（即没有反馈）。直到我注意到（在我多次点击并查看控制台中的错误时）过了几条消息后，我才意识到它实际上已经奏效了。

压缩文件似乎增加了许多不便，但毫无价值。任何 CSV 文件可能都很小。

最好能稍微整理一下，因为它是一个非常实用的功能（一旦你弄清楚它是如何工作的）。

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [2025年七月31日 06:42 UTC](https://meta.discourse.org/t/export-event-data-is-a-bit-painful-and-email-addresses-would-be-useful/242153/3 "2025-07-31T06:42:40Z")

</div>

+1 — 我们强烈支持这一点。

我们使用 Discourse 的 `[event]` 语法（通过 Calendar 插件）来安排和协调官方委员会会议 — 每个活动都存在于一个专门的主题中，我们鼓励成员使用内置界面进行 RSVP。

问题是：我们目前没有一种干净的方法来以可用的格式提取 RSVP 数据。对于公开会议、执行会议和内部简报，能够导出以下内容将非常有用：

- 活动主题标题 + URL
- RSVP 者显示名称 / 用户名
- RSVP 状态（参加 / 感兴趣 / 不参加）
- 电子邮件地址（仅管理员可见，用于考勤记录或直接跟进）
- RSVP 时间戳（如果可能）

我们的职员和主席通常不自己使用 Discourse，因此能够下载 CSV 并与他们共享出勤信息至关重要。

可以理解的是，电子邮件可见性需要限制为网站员工或组管理员的权限 — 但没有它，导出将失去大部分管理价值。

这种结构化导出将大大提高该插件对于使用 Discourse 协调线下会议的现实组织的使用价值。

如果需要，我很乐意提供一个示例 `.csv` 布局！

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [2025年七月31日 20:12 UTC](https://meta.discourse.org/t/export-event-data-is-a-bit-painful-and-email-addresses-would-be-useful/242153/4 "2025-07-31T20:12:25Z")

</div>

此数据浏览器查询将极大地帮助您获得所需内容：

```plaintext
-- [params]
-- int :topic_id

WITH user_emails AS (
  SELECT
    ue.user_id,
    ue.email
  FROM
    user_emails ue
  WHERE
    ue.primary = true
),
forum_timezone AS (
  SELECT
    value AS timezone
  FROM
    site_settings
  WHERE
    name = 'discourse_local_dates_email_timezone'
)

SELECT
  u.name AS display_name,
  u.username,
  ue.email,
  CASE dpei.status
    WHEN 0 THEN 'Going'
    WHEN 1 THEN 'Interested'
    WHEN 2 THEN 'Not Going'
  END AS status,
  to_char(dpei.created_at AT TIME ZONE 'UTC' AT TIME ZONE ft.timezone, 'YYYY-MM-DD HH24:MI:SS') AS rsvp_timestamp
FROM
  discourse_post_event_invitees dpei
JOIN
  posts p ON p.id = dpei.post_id
JOIN
  users u ON u.id = dpei.user_id
JOIN
  user_emails ue ON ue.user_id = dpei.user_id
JOIN
  forum_timezone ft ON true
WHERE
  p.topic_id = :topic_id
ORDER BY
  dpei.status, ue.email

```

如果您为管理员团队创建一个组，并让他们可以访问此查询，它很可能会很好地完成任务。  
您需要教他们使用主题 ID，以及它在 URL 中的含义。但这可能是可行的。

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [2025年八月9日 08:15 UTC](https://meta.discourse.org/t/export-event-data-is-a-bit-painful-and-email-addresses-would-be-useful/242153/5 "2025-08-09T08:15:03Z")

</div>

> [@nathank](#):
>
> If you make a group for your admins staff, and make this query accessible to them it will likely do the job nicely.

我猜有一个为 `admins` 准备的种子组，对吧？

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [2025年八月11日 00:52 UTC](https://meta.discourse.org/t/export-event-data-is-a-bit-painful-and-email-addresses-would-be-useful/242153/6 "2025-08-11T00:52:36Z")

</div>

但是，您的行政人员除非确实需要访问权限，否则可能不应成为 Discourse 站点的管理员。

因此，您可以让他们成为完全管理员并使用 [@admins](https://meta.discourse.org/groups/admins)，或者创建一个包含他们的组。然后，只需将数据浏览器查询分配给该组（他们可以在“报告”选项卡下访问它）。
