Coinpaprika dashboard in Google Sheets (2)

In dit artikel ben ik een begonnen met het maken van een dashboard in Google Sheets met behulp van de Coinpaprika Api. Nu het vervolg.

In dit artikel gaan we de volgende elementen toevoegen:

  • Bonus: dag en nacht mode
  • Coin description
  • Website, White paper, Blockchain Explorer
  • Social media

Bonus: dag en nacht mode

Veel websites hebben een zogenaamde Dag en Nacht mode, wat zo veel inhoudt dat je kan kiezen tussen een lichte achtergrond (= dag mode) of een donker achtergrond (= nacht mode). Ik heb nu nog geen idee of ik later tegen problemen aanloop met de layout, daarom is het een bonus, deze toevoeging is niet noodzakelijk voor het dashboard.

Voeg aan A4 een Data Validation toe (Menu: Data >> Data Validation…) en vul het als volgt in en klik op Save:

Vervolgens gaan we door middel van Conditional Format de kleuren van de cellen en lettertype aanpassen. Over smaak valt te twisten dus gebruik gerust je eigen kleuren combinatie. Coinpaprika maakt gebruik van de volgende combinatie:

  • Dag mode: achtergrond #fff en lettertype #000
  • Nacht mode: achtergrond #252525 en lettertype #9b9b9b

Ga naar menu: Format >> Conditional Formatting… Er verschijn nu rechts in het scherm een sidebar om. Klik op Add new rule + en vul het als volgt in voor Nacht mode:

  • Apply to range: A:Z
  • Format cells if >> Custom formule is… >>
=$A$4="Night Mode"

Kies zelf de opmaak. En voor Dag mode: klik op Add another rule… en vul het als volgt in:

  • Apply to range: A:Z
  • Format cells if >> Custom formule is… >>
=$A$4="Day Mode"

Als het goed is gegaan dan kun je in A4 van mode switchen. Probeer het!

Coin description toevoegen

De API van Coinpaprika heeft verschillende endpoints. In de vorige post hebben we de Coins list opgehaald en nu gaan we iets dieper, namelijk Get coin by ID.

Voeg een nieuw tabblad/sheet toe (+ links onder) en hernoem het naar “Coin by ID”en vul de basisgegevens in:

A2: Help
B2: https://api.coinpaprika.com/#tag/Coins/paths/~1coins~1{coin_id}/get
A3: URL
B3: ="https://api.coinpaprika.com/v1/coins/"&coin
A5: =ImportJSON(B3)

Dit haalt de detailgegevens op van de geselecteerde coin die we later in het Dashboard gaan verwerken.

Ga nu naar het Dashboard. Omdat de description in sommige gevallen best veel tekst bevat gaan we eerst even wat “ruimte maken”. Merge/samenvoeg de volgende cellen: B7:E11 daarna:

A6: Description
A7: =VLOOKUP(coin,'Coin by ID'!A6:AK,MATCH("Description",'Coin by ID'!5:5,0), TRUE)
Uitleg VLOOKUP & MATCH
VLOOKUP: deze functie doet een verticale zoekactie in een range. Het zoekt in de eerste kolom van de range naar de geselecteerde coin en geeft vervolgens de waarde weer van de overeenkomstige rij in een andere kolom. MATCH: zoekt in de opgegeven range de gezochte waarde en geeft de positie terug. In dit geval is de range waarin we zoeken bekend, maar de kolom waarvan we de waarde willen is dynamisch, vandaar dat we een MATCH formule gebruiken om die kolom te vinden.

Website, White paper, Blockchain Explorer

Eerst gaan we linkjes van de website, white paper en blockchain explorers toevoegen.

A12: General info
A13: Website
B13: =VLOOKUP(coin,'Coin by ID'!A6:AK,MATCH("Links Website",'Coin by ID'!5:5,),TRUE)
A14: White paper
B14: =VLOOKUP(coin,'Coin by ID'!A6:AK,MATCH("Whitepaper Link",'Coin by ID'!5:5,),TRUE)
A15: Explorer
B15: =TRANSPOSE(SPLIT(VLOOKUP(coin,'Coin by ID'!A6:AK,MATCH("Links Explorer",'Coin by ID'!5:5,),TRUE),","))
Uitleg TRANSPOSE en SPLIT
De VLOOKUP en MATCH geeft in dit geval een waarde terug van meerdere linkjes gescheiden door een comma, maar ik wil een mooi lijstje onder elkaar. SPLIT verdeelt de inhoud over diverse cellen naast elkaar. TRANSPOSE zet die gegevens netjes onder elkaar.
Het aantal linkjes naar een block explorer wat bijgehouden wordt door Coinpaprika is moeilijk te voorspellen en de functie in B15 werkt alleen wanneer het voldoende ruimte heeft. Ik ga er vanuit dat er maximaal vier linkjes zijn, dat betekent dat er drie vrije rijen onder de block explorer moeten zijn. Wanneer er toch meer linkjes zijn naar de block explorer zal de functie een foutmelding geven.

Social media

Hetzelfde geldt voor het aantal social media linkjes. Dus voor de layout zijn dit de laatste gegevens in de kolommen A en B. Wellicht dat ik in de toekomst nog wat ga verplaatsen. Maar voor nu, vul de volgende cellen

A19: Social media

A20: =FILTER(OFFSET('Coin by ID'!A6,,MATCH("Links Extended Type",'Coin by ID'!5:5,)-1,1000,1),OFFSET('Coin by ID'!A6,,MATCH("Links Extended Type",'Coin by ID'!5:5,)-1,1000,1)<>"")

B20: =FILTER(OFFSET('Coin by ID'!A6,,MATCH("Links Extended URL",'Coin by ID'!5:5,)-1,1000,1),OFFSET('Coin by ID'!A6,,MATCH("Links Extended URL",'Coin by ID'!5:5,)-1,1000,1)<>"")
Uitleg FILTER en OFFSET
OFFSET geeft de waardes terug van in dit geval een kolom in een range waarvan het begin wel bekend is maar het einde niet. Met MATCH berekenen we de kolom waarvan we de waardes willen. FILTER doet ongeveer hetzelfde als OFFSET, maar geeft de mogelijkheid om een voorwaarde mee te geven. We willen namelijk alleen de cellen hebben die niet leeg zijn.

Ik hoop dat het allemaal gelukt is. Mijn sheet ziet er nu als volgt uit in Night mode

Hits: 943

You may also like...