批量授予一组用户徽章

徽章是表彰优秀员工的一种绝佳方式。Discourse 现在允许向一组用户授予徽章。

如果您进入管理面板中的徽章部分,您会注意到在“新建”按钮旁边现在有一个名为“批量授予”的新按钮:

Screen Shot 2020-01-15 at 11.34.31

点击后,系统会提示您选择一枚徽章并开始操作:

选择您想要授予的徽章,并上传一个包含用户邮箱或用户名列表的 CSV 文件(每行一个)。

随后,系统会显示以下消息:

Discourse 将查找匹配的用户,为他们授予徽章,并向他们发送通知。

48 个赞

This is cool.

I propose changing this language to “awarding a badge to a set of users”, as group has a specific meaning in Discourse and a bunch of random email addresses in a CSV isn’t it :wink:.

23 个赞

Very nice, This will be useful :slight_smile:

5 个赞

Awww Yiss, that’s very handy. Thanks :slight_smile:.

3 个赞

This is great, thanks for the feature :slight_smile:

5 个赞

Selecting them from a user list could be easier if possible. Good feature anyway.

5 个赞

Yes that’s my ideal idea. :grin:

Just press on users you want to award too.

2 个赞

Sorry, but I’m not 100% clear on this. Terminology I’m familiar with is:

enclosure, delimiter (the separator) and terminator

enclosure is often quotation marks
delimiter is often a comma
terminator is often a newline

eg.

"1", "Bob", "rkelly@gmail.com", "CA" 
"2", "Carol", "counselor@hotmail.com", "CA" 
"2", "Ted", "tman@yahoo.com", "FL" 

I doubt you mean

rkelly@gmail.com 
, 
counselor@hotmail.com 
, 
tman@yahoo.com 
1 个赞

What I meant was:

rkelly@gmail.com,
counselor@hotmail.com, 
tman@yahoo.com

I edited the post.

6 个赞

当批量向群组添加用户时,系统期望的是用户名列表。而当批量向徽章添加用户时,系统则期望一个包含电子邮件地址的 .csv 文件。

就我个人而言,我更喜欢使用用户名列表,因为从论坛获取用户名要容易得多,无需经过繁琐的管理员流程,而且我有一些 Excel 技巧可以快速生成可复制粘贴的列表。过去,我通过批量将列表添加到一个临时群组,然后修改徽章查询以分配给整个群组的方式批量分配徽章。当“向一组用户颁发徽章”功能出现时,我曾希望能减少一个步骤……

是否有任何方法可以将“用户列表”方式作为批量分配徽章的有效替代方案?

8 个赞

我同意我们应该同时支持这两种方式。

如果列表中的第一项包含“@”,则按电子邮件导入,否则按用户名导入。

此外,我们可以对列表的格式更加宽容一些。

我们只需要求电子邮件或用户名各自占一行,然后执行 split("\n"),移除任何空行,移除末尾的“,”,并移除成对的单引号或双引号(例如 gsub(/^['"]|['"]$/, ""))。

9 个赞

我知道这很难,而且容易引发范围蔓延,但我想知道随着时间的推移,管理界面能否在所有管理员批量操作中实现更高的一致性?例如:

  1. 批量授予徽章:选择徽章,然后上传包含用户电子邮件地址的 CSV 文件

  2. 批量将用户添加到群组:选择群组,然后粘贴用户名或电子邮件列表(每行一个)

  3. 批量邀请用户加入 Discourse:上传包含用户电子邮件地址的 CSV 文件(可选择指定要添加的群组以及要向他们展示的首帖)

显然,这些操作有共同之处,但也存在明显差异,因为它们并非在做完全相同的事情。因此,能否为所有管理员批量操作构建一致的 UI 范式,我尚不清楚。但既然这个问题正在被讨论,我想在此提出。

在这三种方式中,我认为目前最友好的是“批量添加到群组”中的“粘贴用户名或电子邮件列表(每行一个)”。

我经常需要一次性邀请几位用户(比如 5 到 10 位),而逐个邀请的方式略显繁琐缓慢,但使用 CSV 邀请又有些麻烦,需要启动另一个程序或手动编辑 CSV 文件。即使保留 CSV 上传用于真正的大规模批量邀请,如果能拥有一个类似“批量添加到群组”的“邀请用户”对话框,那将非常理想。当然,该对话框只能接受每行一个的电子邮件地址,但这完全没问题。

8 个赞

感谢大家的反馈!:slight_smile:

我们已在此处添加了用户名支持:

https://review.discourse.org/t/feature-support-uploading-a-csv-with-either-user-emails-or-usernames-8971/9183

13 个赞

虽然还没有简单到只需将用户名列表粘贴到输入框中,但这相对于必须提供电子邮件地址来说是一个巨大的进步!是否有计划统一批量处理用户添加到群组或徽章的功能?我不是程序员,但这听起来像是可复用的代码 :slight_smile:

2 个赞

是否可以通过此功能多次授予用户徽章?根据我的测试,这似乎不受支持。

批量向用户列表授予徽章时,已拥有该徽章的用户不会再次获得该徽章。

1 个赞

如果已勾选徽章的“可多次授予”复选框(位于徽章管理页面的底部区域),您应该能够以这种方式多次授予该徽章。

3 个赞

我已启用该功能,但通过 CSV 导入(即使仅包含已拥有该徽章的用户名列表)也无法再次授予。我必须手动为用户授予徽章,之后它才会显示为多次授予。

2 个赞

是否可以手动授予一两个人徽章,而不是上传 CSV?

出于某种原因,“爱好者”(连续登录 10 天)徽章未授予已连续登录 12 天的用户。

1 个赞

我认为那个徽章相当可靠,但有时时区和 UTC 之间的差异可能会使其看起来并非如此。

我认为目前您无法手动授予该徽章,但创建一个只包含用户名的 CSV 文件只需一两秒钟。我刚用手机上的 Google 表格试了一下,速度非常快。:+1:

6 个赞

只是为了突出这个帖子,因为 OP 没有清楚地说明如何正确格式化 CSV。

3 个赞