Trello에서 지정된 기간 동안의 모든 활동을 나열 할 수 있습니까?


11

나는 몇 달 동안 Trello를 사용해 왔으며, 작업하면서 카드에 활동을 게시 한 다음 왼쪽에서 오른쪽으로 '전체'목록으로 옮깁니다. 마감일을 활용하지 않습니다. 주어진 범위의 모든 카드에 활동 텍스트를 나열하는 메커니즘이 있습니까? 주어진 기간 동안 상태 보고서를 제공하기 위해 원시 데이터를 가져 오려고합니다.

예 : 현재 날짜가 2013 년 5 월 15 일인 경우 4 월 29 일부터 5 월 3 일까지 '활동'항목이있는 각 카드의 모든 활동 텍스트 목록을 작성하려고합니다.


이 작업은 Trello API를 통해서만 수행 할 수 있습니다. 원하는 데이터를 얻기 위해 간단한 프로그래밍을하고 있습니까?
Ian Henry

@IanHenry 네, 편안합니다.
Brian

답변:


14

예, Trello API 및 기타 몇 가지 도구를 사용하고 있습니다.

이 답변은 Macie를 사용하는 경우 pipHomebrew 를 통해 설치할 수있는 두 가지 무료 도구 인 HTTPiejq 에 의존합니다 .

$ 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에 대해 요청 4d5ea62fd76aa1136000000c합니다. https://trello.com/dev 로 이동 하여 전체 URL에 추가 된 Trello ID를 보면 알 수 https://trello.com/board/trello-development/4d5ea62fd76aa1136000000c있습니다.

sincebefore필드 자명하다. Trello가 허용하는 가장 큰 응답이기 때문에 limitof를 지정합니다 1000. 보드가 관련 날짜 범위에서 천 개가 넘는 의견을 가지고 있다면 더 복잡한 페이징 솔루션이 필요합니다. 이 답변의 목적에만 관심 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_EXPRESSION 이다 map({date, member: .memberCreator.fullName, comment: .data.text})
    • 방금 .모든 동작의 배열을 변경하지 않고 사용할 수있었습니다 . 그러나 액션은 다소 나쁘기 map때문에 배열 을 핑 {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.