Trello Coding

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.

Persönlichen Trello-Export bestellen