(Or, how to build dashboards from Google Spreadsheets – without using the Tableau data connector)
Well, kind of. Five out of eight, for the keen of eye! (Hint – Trend charts and the Daily CGR use the new Tableau 10 Google Spreadsheet connector, all the rest of the metrics are “live”).
First of all though, what’s this Global Tableau Developer Group?
... until 9 days ago (the picture above is proof), I sent out a tweet:
And so it began. Now there is a cafepress shop, A Slack Channel, a Trello board and a Github! All from people signing up on a Google Form that read:
The purpose of this group will be to go beyond dashboards and embedding.
In time, we'll increase your "front end' skills: e.g.
and 'back end':
- REST API etc
In short, we hope you become a 'full stack' Tableau developer!
We wish to base this group on three key tenants:
We aim to meet virtually once a month, starting after Tableau Conference 2016, using Google Hangout or similar
We aim to produce a shared Google calendar or similar of events
We aim to use collaborative tools, such as Slack, Github and Trello
“Codex Ligat” – or in English, “Code binds us”.
In a week, the group grew to 100 members.
Enough already. We’re here for the code, right?
“What’s the sauce for those donuts”, I can hear you ask.
“Dynamic parameters”, I can answer. Again, kind of. They are “open” parameters actually: just empty (named) string parameters. Look at those legends: they might give you a clue.
For each section: Desktop, Server, Front End & Back End, and each Likert scale – I built a parameter. The key is to send a value to the parameter, which in turn, builds the chart. Like I said, no data connection required – in fact, the workbook on Tableau Public has an extract like this:
Download it here.
How are those values filled though?
I used tabletop.js to grab the JSON from a Google Spreadsheet…which in turn is parsed by sheetsee.js which gets me the values from the columns and cell values I want. These are then passed using the Tableau JS API:
var a = Sheetsee.getColumnTotal(data, "DesktopNoExperience");
The rest of the page is mostly CSS, for now at least. It’s not properly responsive (yet), but it looks pretty enough, and does the job. See you at #TC16 in Austin or at our virtual once a month meet-ups! Make sure you sign up.