Trello Board Daten Exportieren
English version -> on medium.com
–
Habt ihr eine Menge Daten auf Trello und wollt diese umziehen? Oder etwas Erfahrung mit der Trello API sammeln? Dann haben wir für euch ein kleines Beispiel.
Voraussetzungen:
– Trello Account
– Text-Editor
– Spreadsheet Editor (Excel, LibreOffice)
Um mit der Trello API zu kommunizieren, müsst ihr euch mit eurem Atlassian account bei Trello anmelden und dann auf https://trello.com/app-key gehen, um sich einen API Key und Token zu generieren.

Bestätige die Trello-Entwickler-Bedingungen und klicke auf API-Schlüssel anzeigen.

Kopiere den Schlüssel und sichere ihn in einer Textdatei.
Um den Token zu erstellen, klicke auf „Token“.
Dan geht ein neuer Tab auf, dort scrolle bis ganz unten und kllicke „Erlauben“. Damit autorisierst du den Zugriff der Trello API auf deinen
Trello Account.
Auf der nächsten Seite siehst du den Autorisierungs Token, speichere ihn in der gleichen Textdatei, wie den API Key.

Nun da wir alle Vorkehrungen getroffen haben, können wir mit dem Coden anfangen.
Öffnet einen Editor eurer Wahl (z.B. Atom) und erstellt eine „index.php“ Datei.
Den API Call, den wir benutzen werden, könnt ihr hier nachlesen.
Boards laden
Wir benutzen den Unirest Http Client und für diesen Zweck den Paketmanager Composer.
Installiert den Client mit dem Befehl
php composer.phar require mashape/unirest-php
Ruft die Trello API wie folgt auf um alle Boards eurer Organisation zu laden. Ihr braucht euren Trello-API Key (yourKey), euer Trello-API-Token und die Trello-ID eurer Organisation (zu finden im URL bei Trello).
getBoards() { return Unirest\Request::get( 'https://api.trello.com/1/organizations/{yourOrgaId}/boards, ['Accept' => 'application/json'], [ 'key' => '{yourKey}', 'token' => '{yourToken}', 'fields' => 'id,memberships,name,url' ] )->body; }
Beispiel Antwort von Trello:
[ { "name": "Test-Board", "id": "dagshfdahsgdfahgsdfajhs", "url": "https:\/\/trello.com\/b\/abcdef\/test-board", "memberships": [ { "id": "123123123123123", "idMember": "456456456456456", "memberType": "admin", "unconfirmed": false, "deactivated": false } ] } ]
In unserem Use-Case werden alle Admins von allen Boards einer Organisation benötigt. In den bisherigen Daten sind die Members jedes Boards enthalten, allerdings fehlt der Volle Name der Trello-Accounts.
Members laden
function getAdmins($board) { $boards = []; try { $members = Unirest\Request::get( 'https://api.trello.com/1/boards/' . $board->id . '/members', [...], [...] )->body; foreach ($board->memberships as $j => $member) { if($member->memberType !== 'admin') { continue; }if(!is_array($boards[$board->id])) {
$boards[$board->id] = [
'name' => $board->name,
'admins' => []
];
}
foreach($members as $k => $boardMember) {
if($member->idMember !== $boardMember->id) {
continue;
}
$boards[$board->id]['admins'][] = $boardMember->fullName;
}
}
return $boards[$board->id]['admins'];
} catch(Exception $e) { echo "Error!!! - " . $e->getMessage(); print_r($e->getTrace()); die(); return []; } }
Um die Admins Board für Board zu laden kann man nun also folgendes tun:
foreach(getBoards() as $i => $board) { $admins = getAdmins($board); foreach ($admins as $admin) { // ... } sleep(2); }
Export als CSV
Wir benutzen echo um CSV Output zu erzeugen.
echo "id,board,admin\n"; foreach(getBoards() as $i => $board) { $admins = getAdmins($board); foreach ($admins as $admin) { echo $board->id . ',' . $board->name . ',' . $admin . PHP_EOL; } sleep(2); }
Mit dem letzten Befehl wird der Terminal Output in einer Datei „result.csv“ gespeichert.
php index.php > result.csv
Der Output sieht wie folgt aus:
id,board,admin dagshfdahsgdfahgsdfajhs,Test-Board,Maxim Uhlemann thiscouldbeyourmessage,Test-Board 2,Stefan Wessel
Diese Datei kann nun mit jedem beliebigen Spreadsheet-Editor geöffnet und weiter bearbeitet werden.
Prost.