Trelloで特定の日付範囲のすべてのアクティビティを一覧表示することはできますか?


11

私は数か月間Trelloを使用しており、作業中は定期的にカードにアクティビティを投稿し、左から右に「完全」リストに移動します。期限を利用しません。特定の範囲のすべてのカードのアクティビティテキストを一覧表示するメカニズムはありますか?特定の期間のステータスレポートをフィードするために、いくつかの生データをプルしようとしています。

例:現在の日付が2013年5月15日の場合。4月29日から5月3日までの期間に「アクティビティ」エントリがあった各カードのすべてのアクティビティテキストのリストを作成したいとします。


これは可能ですが、Trello APIを使用することによってのみ可能です。必要なデータを取得するために簡単なプログラミングを行うことに慣れていますか?
Ian Henry

@IanHenryはい私は快適です。
ブライアン

回答:


14

はい、Trello APIと他のいくつかのツールを使用しています。

この答えは、HTTPiejqに依存しています。これは、Macを使用している場合、pipHomebrewを介してインストールできる2つの自由に利用できるツールです。

$ pip install httpie
$ brew install jq

を使用しHTTPieてTrello APIにクエリを実行し、ボードの生のアクションフィードを取得できますjq。次に、そのデータを有用なものに変換するために使用できます。

「簡単な」ものから始めましょう。次のコマンドは、2013年4月にTrello Dev Boardで行われたすべてのコメントを提供します。これについては、後で説明します。

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に対してリクエストを行います。https: //trello.com/dev 4d5ea62fd76aa1136000000cアクセスして、Trelloが完全なURLに追加するID(https://trello.com/board/trello-development/4d5ea62fd76aa1136000000c)を確認することでそれを取得しました。

sinceそしてbeforeフィールドは自明です。を指定したのlimit1000、Trelloが許可する最大の応答だからです。ボードの関連する日付範囲に1,000を超えるコメントがある場合、ここではより複雑なページングソリューションが必要になります。私はこの回答の目的のためにそれらにのみ興味filterがあるcommentCardので、私はof を指定します。より多くのアクションタイプが必要な場合は、などのカンマ区切りリストを指定します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_EXPRESSION です map({date, member: .memberCreator.fullName, comment: .data.text})
    • .すべてのアクションの配列を変更せずに使用することもできます。しかし、アクションはやや醜いので、map配列をpingして{date, member: .memberCreator.fullName, comment: .data.text}個々のアクションオブジェクトに適用することで、アクションを有用なものにマッサージしています。
      • {date}同じである{date: date}jq
      • 他のすべてはかなり自明です。これで、日付、メンバー(名前だけですが、簡単に取得できます)、およびコメントのテキストを取得できました。

だからあなたはそれを持っています。ええと、うまくいけば。このデータマッサージを任意のスクリプト言語で行うことはできましたが、これはまさにjqそのために構築されたものであるため、クールな新しいツールを学ぶための良い言い訳です。詳しくは、jqのマニュアルをご覧ください。

現在、これはTrello Dev Boardが公開されているため機能します。しかし、プライベートデータが必要な場合はどうでしょうか。

これを行う正しい方法は、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個のアクションを確認できます。カードのメンバーシップを追跡することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.