是否可以在Trello中列出给定日期范围内的所有活动?


11

我已经使用Trello几个月了,在处理卡片时,我通常会在卡片上发布活动,然后将它们从左到右移动到“完成”列表。我没有利用到期日。是否有一种机制可以列出给定范围内所有卡上的活动文本。我正在尝试提取一些原始数据以在给定时间段内提供状态报告。

示例:如果今天是2013年5月15日。我想在4月29日至5月3日的每个具有“活动”条目的卡上生成所有活动文本的列表。


可以完成此操作,但只能使用Trello API。您是否愿意进行一些简单的编程来获取所需的数据?
伊恩·亨利

@IanHenry是的,我很舒服。
布莱恩

Answers:


14

是的,它使用了Trello API和其他一些工具。

此答案依赖于HTTPiejq,这两个可免费使用的工具,如果您使用的是Mac ,则可以通过pipHomebrew安装:

$ pip install httpie
$ brew install jq

使用HTTPie我们可以查询Trello API以获取电路板的原始操作提要,然后可以jq将其转换为有用的数据。

让我们从“简单”开始。以下命令将为我们提供2013年4月在Trello开发委员会上发表的所有评论。我将在稍后解释:

http GET "https://api.trello.com/1/boards/4d5ea62fd76aa1136000000c/actions" "since==Apr 1 2013 EDT" "before==May 1 2013 EDT" "limit==1000" "filter==commentCard" |  jq 'group_by(.data.card.id) | map({key: (.[0].data.card | "\(.name) (\(.id))"), value: map({date, member: .memberCreator.fullName, comment: .data.text}) }) | from_entries'

如果一切都按计划进行,我们应该会看到以下内容:

{
  "Embed All The Things (516fcff9b998572923008fb2)": [
    {
      "comment": "Embed.ly now supports https better, so maybe we can upgrade to that version. http://embed.ly/embed/security/ssl",
      "member": "Brett Kiefer",
      "date": "2013-04-26T16:15:21.408Z"
    },
    {
      "comment": "Embedding a Google Map would be nice.",
      "member": "Michael Warkentin",
      "date": "2013-04-24T18:39:12.155Z"
    },
    {
      "comment": "Github issues / pull requests",
      "member": "Michael Warkentin",
      ...

凉。那是一个合理的JSON对象,我们可以轻松地将其解析为任意数量的其他格式。现在,让我们逐步进行操作,以便我们足够了解它,以对其进行修改以适合我们的需求。

http GET "https://api.trello.com/1/boards/4d5ea62fd76aa1136000000c/actions" "since==Apr 1 2013 EDT" "before==May 1 2013 EDT" "limit==1000" "filter==commentCard"

这是唯一依赖Trello的部分。我们针对具有ID的董事会的公共API提出了请求4d5ea62fd76aa1136000000c-我通过访问https://trello.com/dev并查看ID来实现这一点,Trello附加到完整URL(https://trello.com/board/trello-development/4d5ea62fd76aa1136000000c)后面。

sincebefore字段是不言自明的。我指定一个limit1000因为这是Trello允许的最大响应。如果您的委员会在相关日期范围内有超过一千条评论,则此处将需要更复杂的分页解决方案。我指定一个filtercommentCard因为我仅对这些答案感兴趣。如果需要更多操作类型,请指定以逗号分隔的列表,例如filter==commentCard,updateCard:idList,createCard。可以在Trello API参考中找到有效的操作类型。

如果我们自己运行它,我们将获得很多相对难以理解的信息。因此,我们通过管道将其jq按摩成更有用的东西。

jq 'group_by(.data.card.id) | map({key: (.[0].data.card | "\(.name) (\(.id))"), value: map({date, member: .memberCreator.fullName, comment: .data.text}) }) | from_entries'

我们的jq脚本逐段进行以下转换,每个转换将其结果传递给下一个运算符:

  • group_by(.data.card.id)
    • Trello只是给了我们一系列动作。我们将其变成一个数组数组,其中每个子数组仅包含给定卡的动作。基本上[[card1_action1, card1_action2...], [card2_action1, card2_action2...], ...]
  • map({key: KEY_EXPRESSION, value: VALUE_EXPRESSION}) | from_entries
    • 我们不想要一个数组数组;我们只想要一个形式的对象{ card1: [action1, action2, ...], card2: [action1, action2, ...], ...}。通过将数组变成键值对数组,我们可以from_entries将其变成对象。凉。
  • 现在让我们看看我KEY_EXPRESSION上面所说的:(.[0].data.card | "\(.name) (\(.id))")
    • 这很简单。我们从第一个动作中提取卡条目(因为所有动作都应该相同),所以我们可以选择任何一个,但第一个似乎是明智的选择。然后我们用字符串插值(\(...))构造看起来像的东西"name (id)"
  • VALUE_EXPRESSIONmap({date, member: .memberCreator.fullName, comment: .data.text})
    • 我们本来可以使.所有动作的数组保持不变。但是由于动作有点丑陋,我们通过map遍历数组并将其应用于{date, member: .memberCreator.fullName, comment: .data.text}每个单独的动作对象,将它们按摩成有用的东西。
      • {date}是一样的{date: date}jq
      • 其他一切都是不言自明的。现在,我们有了日期,成员(只是他们的名字,但是很容易获得更多名字)以及评论文本。

所以你有它。嗯,希望如此。我们可以使用任何脚本语言来进行此数据按摩,但这正是其jq目的所在,因此,这是学习一个很棒的新工具的好借口。查阅jq手册以了解更多信息。

现在,这是可行的,因为Trello开发委员会是公开的。但是,如果我们要私人数据怎么办?

正确的做到这一点,是产生的API令牌。该Trello API入门指南对如何做到这一点的详细runthrough。但是我们很着急,所以我们将以懒人的方式来做...

在Chrome中登录http://trello.com并打开控制台(“查看”>“开发人员”>“ JavaScript控制台”)。键入$.cookie('token')到窗口。这样会吐出类似的东西"uniquememberid/somegarbledstring"。复制引号之间的部分,并将请求修改为如下形式:

http GET "https://api.trello.com/1/boards/THE_ID_OF_THE_PRIVATE_BOARD_YOU_WANT/actions" "Cookie:token=uniquememberid/somegarbledstring" "since==Apr 1 2013 EDT" "before==May 1 2013 EDT" "limit==1000" "filter==commentCard" | jq ...

我们唯一更改的是添加"Cookie:token=uniquememberid/somegarbledstring"标题。这将使Trello使用令牌。请注意,该令牌是非常私人的...如果您将其提供给其他人,他们基本上可以以您的身份登录,直到您在Trello帐户页面上将其撤销为止。因此,请注意。或执行API密钥/令牌生成步骤。

现在修改一下,以所需的格式获取所需的精确数据。


3

我创建了一个名为reportsfortrello.com的工具,该工具将向您显示一段时间内卡片在列表中的时间。

它是免费的,允许您在每个板上查看1000个动作。它还可以跟踪卡会员身份。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.