เป็นไปได้หรือไม่ที่จะแสดงกิจกรรมทั้งหมดสำหรับช่วงวันที่ที่ระบุใน Trello


11

ฉันใช้ Trello มาหลายเดือนแล้วและฉันโพสต์กิจกรรมบนการ์ดเป็นประจำเมื่อฉันทำงานกับพวกเขาจากนั้นย้ายพวกเขาจากซ้ายไปขวาไปยังรายการ 'เสร็จสมบูรณ์' ฉันไม่ใช้ประโยชน์จากวันครบกำหนด มีกลไกในการแสดงข้อความกิจกรรมบนการ์ดทั้งหมดในช่วงที่กำหนดหรือไม่ ฉันพยายามดึงข้อมูลดิบเพื่อป้อนรายงานสถานะในช่วงเวลาที่กำหนด

ตัวอย่าง: ถ้าวันปัจจุบันคือ 15 พฤษภาคม 2013 ฉันต้องการสร้างรายการข้อความกิจกรรมทั้งหมดในการ์ดแต่ละใบที่มีรายการ 'กิจกรรม' สำหรับช่วงเวลา 29 เมษายน - 3 พฤษภาคม


สิ่งนี้สามารถทำได้ แต่ใช้ Trello API เท่านั้น คุณพอใจที่จะเขียนโปรแกรมแบบเบา ๆ เพื่อรับข้อมูลที่คุณต้องการหรือไม่?
เอียนเฮนรี่

@IanHenry ใช่ฉันสะดวกสบาย
ไบรอัน

คำตอบ:


14

ใช่มันคือการใช้ Trello API และเครื่องมืออื่น ๆ

คำตอบนี้อาศัยHTTPieและJQสองเครื่องมือที่มีอยู่ได้อย่างอิสระที่สามารถติดตั้งผ่านทางpipและHomebrewถ้าคุณกำลังใช้ Mac:

$ pip install httpie
$ brew install jq

การใช้HTTPieเราสามารถสืบค้น Trello API เพื่อรับฟีดแอ็คชั่นแบบ raw สำหรับบอร์ดจากนั้นเราสามารถใช้jqเปลี่ยนข้อมูลนั้นให้เป็นสิ่งที่มีประโยชน์

เริ่มจากสิ่งที่ "ง่าย" กันก่อน คำสั่งต่อไปนี้จะให้ความคิดเห็นทั้งหมดที่เรามีต่อคณะกรรมการ Trello Devในเดือนเมษายน 2013 ฉันจะอธิบายสิ่งนี้ในไม่ช้า:

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 เราทำการร้องขอกับ API สาธารณะสำหรับบอร์ดที่มี id 4d5ea62fd76aa1136000000c- ฉันได้รับโดยไปที่https://trello.com/devและดู id trello ต่อท้าย URL แบบเต็ม ( https://trello.com/board/trello-development/4d5ea62fd76aa1136000000c)

The sinceและbeforeฟิลด์อธิบายตนเอง ฉันระบุlimitของ1000เพราะนั่นคือการตอบสนองที่ใหญ่ที่สุด Trello จะช่วยให้ หากบอร์ดของคุณมีมากกว่าหนึ่งพันความคิดเห็นในช่วงวันที่ที่เกี่ยวข้องจะต้องใช้วิธีแก้ปัญหาการเพจที่ซับซ้อนมากขึ้นที่นี่ ฉันระบุfilterของcommentCardเพราะผมสนใจเฉพาะในเหล่านั้นสำหรับวัตถุประสงค์ของคำตอบนี้ 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 รายละเอียดของวิธีการทำเช่นนี้ แต่เรากำลังรีบเราจะทำตามวิธีของคนขี้เกียจ ...

ลงชื่อเข้าใช้http://trello.comใน Chrome และเปิดคอนโซล (ดู> นักพัฒนา> คอนโซล 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 ซึ่งจะแสดงระยะเวลาที่การ์ดอยู่ในรายการในช่วงระยะเวลาหนึ่ง

ฟรีและให้คุณดูการกระทำ 1,000 รายการต่อกระดาน นอกจากนี้ยังสามารถติดตามการเป็นสมาชิกบัตร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.