Verbindung von einem privaten Trello-Board mit Power BI Desktop
Wie man mithilfe der WEB-API eine Verbindung mit PBID zu Trello herstellt
Als ich mich mit der Aufgabe beschäftigt habe, ein privates Trello-Board mit Power BI zu verbinden, um daraus dann Reports zu erstellen, die sich auch automatisch aktualisieren lassen, habe ich im Internet versucht zu recherchieren wie das funktioniert, aber konnte nur wenig oder wenig Hilfreiches dazu gefunden. Deswegen habe ich selbst viel versucht und dabei auch Vieles herausgefunden, das ich hier für diejenigen erklären möchte, die das Gleiche machen wollen.
Benötigte Informationen für die Verbindung
Der Weg wie man das Trello-Board mit Power BI Desktop verbindet, funktioniert über die WEB-API von Trello. Man braucht dafür den API-Key, den Token und die dazugehörige Board-ID. Man bekommt den API-Key und den Token, indem man sich in Trello anmeldet und dann auf den Link klickt: https://trello.com/app-key.
Von da erhält man den API-Schlüssel und den Token, der sich im Text unter dem Schlüssel als Link befindet.
Wenn man auf den Link zum Token klickt, öffnet sich eine neue Seite, auf der man unten auf „Erlauben“ klicken muss. Dann wird man auf eine Seite weitergeleitet, auf der der Token sich befindet.
Dazu benötigen wir noch die Board-ID. Die Board-ID befindet sich in der URL des Trello-Boards.
Die URL ist wie folgt aufgebaut:
https://trello.com/b//name des Boards
Wenn man die benötigten Informationen bekommen hat verbinden wir uns nun mit Power BI Desktop (PBID). Nun gibt es verschiedene Schritte, um an die verschiedenen Daten heranzukommen. In diesem Beitrag nehme ich alle Cards (Aufträge), die sich auf dem Trello-Board befinden, und die Listen (Spalten).
Wie man an die Cards (Aufträge) kommt
Um an die Cards (Aufträge) und an die Listen (Spalten) heranzukommen in PBID gibt es 2 Möglichkeiten, die ich herausgefunden habe.
Die 1.Möglichkeit ist diese: Man geht auf „Daten abrufen“ und dann auf „WEB“. Dann gibt man Folgendes ein:
https://api.trello.com/1/boards//cards?key=&token=
Die 2.Möglichkeit wäre, dass man es über Power-Query hinzufügt.
Man geht auf „Daten abrufen“ und auf „Leere Abfrage“, dann hat sich eine neue Abfrage hinzugefügt, auf die man dann rechts klickt und dann den „Erweiterten Editor“ öffnet. Dann öffnet sich ein Power-Query Fenster, wo man folgendes hineinschreibt:
Json.Document(Web.Contents("https://api.trello.com/1/boards/Board-ID/cards?key=API-Key&token=Token"))
Attribute/Informationen der Cards
Nun hat man eine Liste mit mehreren Einträgen. Um von dort aus an die jeweiligen Attribute (Informationen) der Cards zu kommen, muss man oben bei der Liste mit Rechtsklick draufklicken und dann auf „Zu Tabelle“ drücken. Es öffnet sich dann noch ein Fenster wo man auswählen kann ab welchem Zeichen getrennt werden soll usw. Dort wählt man die Einstellungen wie im Bild aus (sollte automatisch so sein). Daraufhin verändert sich der Name „Liste“ zu „Column 1“, und daneben ist ein Knopf mit 2 Pfeilen die nach links und rechts gehen. Wenn man auf den Knopf mit den 2 Pfeilen klickt, öffnen sich die verschiedenen Attribute der Cards, wo man dann aussuchen kann welche man haben will.
Wie man an die Lists (Spalten) rankommt
Dann habe ich die Lists (Spalten) in PBID hinzugefügt, indem ich mit Rechtsklick eine neue Abfrage als „Leere Abfrage“ hinzugefügt habe. Deraufhin habe ich wieder den „Erweiterten Editor“ geöffnet und folgendes im Power Query eingefügt:
Json.Document(Web.Contents("https://api.trello.com/1/boards/Board-ID/lists?key=API-Key&token=Token"))
Das wäre wie bei der oben beschriebenen zweiten Möglichkeit.
Oder man macht es mit „Web“ als Connector, wie bei der ersten oben beschriebenen Möglichkeit. Man tippt dann nur folgendes ein:
https://api.trello.com/1/boards/Board-ID/lists?key=API-Key&token=Token
Attribute/Informationen der Lists
Wie bei den Cards hat man eine Liste mit mehreren Einträgen, die man wie folgt in eine Tabelle umwandeln muss: Rechtsklick oben bei der Liste, und dann auf „Zu Tabelle“ drücken. Dann wie im mittleren Bild bestätigen.
Daraufhin verändert sich der Name wieder von „Liste“ zu „Column1“, und daneben erscheint erneut der Knopf mit 2 Pfeilen, die nach links und rechts gehen. Klickt man auf den Pfeil, öffnen sich die Attribute von den Lists, wo man sich dann aussuchen kann, welche man haben will.
Wenn man noch mehr Infos vom Trello-Board haben möchte: https://developer.atlassian.com/cloud/trello/rest/api-group-actions/
Attachments/Anhänge von Cards hinzufügen
Das, was jetzt folgt, ist eine Bonus-Information die ich bei meinen Recherchen ebenfalls herausgefunden habe. Weil ich dazu sonst nichts gefunden habe, erkläre ich es hier:
Man kann auch die Attachments (Anhänge) zu den einzelnen Aufträgen als Extra-Spalten hinzufügen. Der Befehl, der die Attachments hinzufügt, ist nur für einzelne Cards gedacht, deswegen müssen wir den Code etwas verändern und die CardID als Variable einfügen (die sich mit jeder Card ändert). So bekommen wir zu jeder Card auch die dazugehörigen Attachments. Man braucht die Spalte mit den IDs von den Cards in der gleichen Abfrage. Dazu muss man bei den Cards die ID als Attribut/Information hinzugefügt haben.
Man geht zu der Abfrage wo die Spalte mit den IDs von den Cards aufgelistet sind und geht dann oben auf „Spalte hinzufügen“ und dann auf „Benutzerdefinierte Spalte“.
Nun schreibt man:
Each Json.Document(Web.Contents("https://api.trello.com/1/cards/"&()]&"/attachments/?key=&token="))
Es erscheint eine Sicherheitswarnung, dann muss man den Haken setzen und speichern.
Attribute/Informationen der Attachments
Wir haben nun, wie oben beschrieben, eine Spalte hinzugefügt mit einer Liste an Attributen. Um die einzelnen Attribute zu bekommen muss man bei dem Spaltennamen rechts auf die wieder auf die zwei Pfeile, die nach links und rechts, gehen drücken und dann auf „Auf neue Zeilen ausweiten“ klicken. Dann entsteht eine Spalte mit Records.
Anschließend wieder auf den Spaltennamen und die zwei Pfeile, die nach links und rechts gehen, klicken, und dann kann man einfach auswählen welche Attribute ausgegeben werden sollen.
Problem: Dynamische Datenquelle
Nun gibt es aber ein Problem: Sobald man die Attachments hinzufügt entsteht eine dynamische Datenquelle, und nachdem man diese im Power BI Service veröffentlicht hat, lässt es sich nicht automatisch zeitgesteuert aktualisieren. In PBID geht es, aber nicht im Web. Was das genau ist und wie man das behebt, erkläre ich im nächsten Blogbeitrag!