Export Trello board and extract the card names and links using C#

I have a Trello board with tons of cards, most of them archived, and I want to go through all of them and determine which ones are worth documenting. In order to that I need to export the board as JSON and extract out the relevant data for each card – which for me is the title, labels, if it’s archived, and a link to the card. This article shows how to do that.

Export Trello board as JSON

  1. Click Show Menu in the top-right corner
  2. Click …More
  3. Click Print and Export
  4. Click Export as JSON
  5. This will open the JSON in the browser, just wait a lil bit
  6. Right-click and Save As to your computer

Create a new console app project and add Newtonsoft as a reference

I always use Newtonsoft when working with JSON.

Examine the JSON structure

In order to know how to extract the relevant data I first need to examine the data and figure out the structure. Here are the relevant parts of the JSON data:

{ ...irrelevant fields... "cards": [{ ...irrelevant fields... "closed": true, "name": "example card name", "labels": [{"name":"exampleLabel"}], "shortUrl": "the card's url" } }] }
Code language: plaintext (plaintext)

Extract the relevant fields and save as CSV

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace TrelloExtractor { class Program { static void Main(string[] args) { //load the JSON file var jsonFileContent = File.ReadAllText(@"C:\Data\trelloData.json"); //deserialize into a dynamic object using Newtonsoft var json = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(jsonFileContent); //initialize the CSV by writing the header StringBuilder csv = new StringBuilder(); csv.AppendLine("NAME,ARCHIVED,LABELS,LINK"); //extract the relevant fields var cards = json["cards"]; Console.WriteLine($"Loaded {cards.Count} card(s)"); foreach(dynamic card in cards) { var labels = string.Join(" ", (card["labels"] as IEnumerable<dynamic>).Select((label) => label["name"])); csv.AppendLine($"\"{card["name"]}\",{card["closed"]},{labels},{card["shortUrl"]}"); } File.WriteAllText(@"C:\Data\trelloCSV.csv", csv.ToString()); Console.WriteLine("Done"); Console.ReadKey(); } } }
Code language: C# (cs)

Open in Excel

Now I can use Excel to look at this data.

Leave a Comment