Trello'da belirli bir tarih aralığındaki tüm etkinlikleri listelemek mümkün mü?


11

Trello'yu birkaç aydır kullanıyorum ve üzerinde çalıştığımda kartlarda rutin olarak aktivite yayınlıyorum ve daha sonra bunları 'Tamamlandı' listesine soldan sağa taşıyorum. Teslim tarihlerini kullanmam. Belirli bir aralık için tüm kartlardaki etkinlik metnini listeleyen bir mekanizma var mı? Belirli bir süre için bir durum raporu beslemek için bazı ham veri çekmeye çalışıyorum.

Örnek: Bugünün tarihi 15 Mayıs 2013 ise. 29 Nisan - 3 Mayıs dönemi için 'etkinlik' girişleri olan her kartta tüm etkinlik metninin bir listesini oluşturmak istiyorum.


Bu ancak Trello API'sı kullanılarak yapılabilir. İstediğiniz verileri elde etmek için hafif programlama yapmaktan rahat mısınız?
Ian Henry

@IanHenry Evet rahatım.
Brian

Yanıtlar:


14

Evet, Trello API'sini ve diğer birkaç aracı kullanıyor.

Bu cevap dayanır HTTPie ve JQ yoluyla kurulabilir iki serbestçe kullanılabilir araçlar pip ve Homebrew Eğer bir Mac kullanıyorsanız:

$ pip install httpie
$ brew install jq

Kullanma HTTPieo zaman kullanabilirsiniz, bir yönetim kurulu için çiğ aksiyon yem almak için Trello API sorgulayabilir jqkullanışlı bir hale verileri açmak için.

"Basit" bir şeyle başlayalım. Aşağıdaki komut , Nisan 2013 ayında Trello Dev Board'da yapılan tüm yorumları bize verecek . Bunu bir saniye içinde açıklayacağım:

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'

Her şey plana göre giderse, böyle bir şey görmeliyiz:

{
  "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",
      ...

Güzel. Bu, istediğiniz sayıda başka biçime kolayca ayrıştırabileceğimiz tek ve makul bir JSON nesnesidir. Şimdi bunun üzerinden geçelim, böylece ihtiyaçlarımıza uyacak şekilde değiştirmeyi yeterince anlayalım.

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'ya bağlı olan tek kısım bu. Biz kimliğine sahip genel API için talepte bulunuyoruz 4d5ea62fd76aa1136000000c- bunu https://trello.com/dev adresine giderek ve Trello'nun tam URL'ye ( https://trello.com/board/trello-development/4d5ea62fd76aa1136000000c) eklediği kimliğe bakarak anladım .

sinceVe beforealanlar kendiliğinden gelir. Ben belirtmek limitait 1000olduğunu Trello sağlayacak büyük tepki olduğu için. İlgili tarih aralığında kurulunuzda binden fazla yorum varsa, burada daha karmaşık bir sayfalama çözümü gerekir. Ben belirtmek filterait commentCardsadece bu cevap amaçları için olanlar ilgilenen olmam. Daha fazla eylem türü istiyorsanız, gibi virgülle ayrılmış bir liste belirtin filter==commentCard,updateCard:idList,createCard. Geçerli eylem türleri Trello API başvurusunda bulunabilir .

Eğer bunu kendi başımıza yürütürsek, anlaşılması oldukça zor birçok bilgi alırız. Bu yüzden onu jqbiraz daha kullanışlı bir şeye masaj yapmak için bağlarız.

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

Parça parça, jqsenaryomuz aşağıdaki dönüşümleri yapıyor, her biri sonucunu bir sonraki operatöre iletiyor:

  • group_by(.data.card.id)
    • Trello bize sadece bir dizi eylem sunuyor. Bunu, her alt dizinin yalnızca belirli bir kart için eylemler içerdiği bir dizi dizisine dönüştürürüz. temel olarak[[card1_action1, card1_action2...], [card2_action1, card2_action2...], ...]
  • map({key: KEY_EXPRESSION, value: VALUE_EXPRESSION}) | from_entries
    • Bir dizi dizi istemiyoruz; sadece formun bir nesnesini istiyoruz { card1: [action1, action2, ...], card2: [action1, action2, ...], ...}. Diziyi bir dizi anahtar / değer çifti haline getirerek, bunu from_entriesbir nesneye dönüştürmek için kullanabiliriz . Güzel.
  • Şimdi KEY_EXPRESSIONyukarıda ne dediğime bakalım :(.[0].data.card | "\(.name) (\(.id))")
    • Bu oldukça basit. Kart girişini ilk eylemden alıyoruz (tüm eylemler için aynı olması gerektiğinden, herhangi birini seçebilirdik, ancak ilki aklı başında seçim gibi görünüyor). Sonra \(...)benzeyen bir şey oluşturmak için string interpolation ( ) kullanırız "name (id)".
  • VALUE_EXPRESSION dır-dir map({date, member: .memberCreator.fullName, comment: .data.text})
    • Biz sadece kullanılmış olabilir .değişmeden bütün eylemlerin dizisini alır. Ancak eylemler biraz çirkin olduğu için, mapdiziye ping yaparak ve {date, member: .memberCreator.fullName, comment: .data.text}her bir eylem nesnesine uygulayarak bunları faydalı bir şeye masaj yapıyoruz .
      • {date}aynıdır {date: date}için jq.
      • Geri kalan her şey oldukça açıklayıcı. Artık tarihe, üyeye (sadece isimleri, ancak daha fazlasını elde etmek kolay olurdu) ve yorum metnine sahibiz.

İşte burada. Umarım. Bu verilere herhangi bir komut dosyası dilinde masaj yapabilirdik, ama tam olarak jqbunun için tasarlandı, bu yüzden havalı yeni bir araç öğrenmek için iyi bir bahane. Daha fazla bilgi için jq kılavuzuna bakın.

Şimdi bu işe yarıyor çünkü Trello Dev Kurulu halka açık. Peki ya özel veriler istiyorsak?

Bunu yapmanın doğru yolu bir API jetonu oluşturmaktır. Trello API Başlangıç Kılavuzu Bunun nasıl ayrıntılı bir akma vardır. Ama acelemiz var, bu yüzden tembel adamın yolunu yapacağız ...

Chrome'da http://trello.com adresine giriş yapın ve konsolu açın (Görünüm> Geliştirici> JavaScript Konsolu). Tip $.cookie('token')penceresine. Bu gibi bir şey tükürecek "uniquememberid/somegarbledstring". Parçayı tırnak işaretleri arasında kopyalayın ve isteği şu şekilde değiştirin:

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 ...

Değiştirdiğimiz tek şey "Cookie:token=uniquememberid/somegarbledstring"başlığı eklemektir . Bu, Trello'nun jetonu kullanmasını sağlayacaktır. Bu jetonun çok özel olduğunu unutmayın ... başka birine verirseniz, siz Trello Hesap Sayfasında iptal edene kadar temelde sizin gibi giriş yapabilirler . Yani, bilirsin, dikkatli ol. Veya API anahtarı / jeton oluşturma adımını izleyin.

Şimdi istediğiniz formatta ihtiyacınız olan kesin verileri elde etmek için değişiklik yapın.


3

Belirli bir süre boyunca bir kartın listede ne kadar süre kalacağını gösterecek reportfortrello.com adlı bir araç oluşturdum.

Ücretsizdir ve her tahtaya 1000 eylem geri bakmanızı sağlar. Ayrıca kart üyeliklerini de takip edebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.