#GTDG - Look ma, no TDE!

(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?

It’s a long time coming, but in 2015, Anya A’Hearn, Chris DeMartini and I quietly wrote a piece on a blog called “Padawan Dojo”, meant to be a JavaScript primer for Tableau users.  In fact, we actually wrote a couple of posts, appropriately enough titled JS101 and JS102. But they sat there, all alone...

... 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.

  • HTML,
  • CSS,
  • JavaScript

and 'back end':

  • Server,
  • Python,
  • REST API etc

In short, we hope you become a 'full stack' Tableau developer!

We wish to base this group on three key tenants:

1) Inclusive
2) Empathy
3) Collaborative

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.

Something had either changed!  Maybe more people want to start learning how to use HTML, CSS, JavaScript, Python et cetera since we published “Padawan Dojo” – or maybe it was the excitement of chatting on Slack.  Who knows, but the response is frankly, incredible – and it’s exciting to see where it goes and grows from here.

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");

workbooka.changeParameterValueAsync("DesktopNoExperience", a);

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.