Add handling of data already in gviz format.
diff --git a/render.js b/render.js
index 1a249ac..c494d4f 100644
--- a/render.js
+++ b/render.js
@@ -481,12 +481,40 @@
 }
 
 
-function gotData(data) {
-  console.debug('gotdata:', data);
-  var headers = data.shift();
-  var types = guessTypes(data);
-  var grid = {headers: headers, data: data, types: types};
-  console.debug('grid:', grid);
+function gridFromData(gotdata) {
+  var headers, data, types;
+  if (gotdata.table) {
+    // gviz format
+    headers = [];
+    for (var headeri in gotdata.table.cols) {
+      headers.push(gotdata.table.cols[headeri].label ||
+		   gotdata.table.cols[headeri].id);
+    }
+    data = [];
+    for (var rowi in gotdata.table.rows) {
+      var row = gotdata.table.rows[rowi];
+      var orow = [];
+      for (var coli in row.c) {
+	var col = row.c[coli];
+	orow.push(col.v);
+      }
+      data.push(orow);
+    }
+  } else {
+    // assume simple [[cols...]...] (two-dimensional array) format, where
+    // the first row is the headers.
+    headers = gotdata.shift();
+    data = gotdata;
+  }
+  types = guessTypes(data);
+  return {headers: headers, data: data, types: types};
+}
+
+
+function gotData(gotdata) {
+  console.debug('gotdata:', gotdata);
+  var grid = gridFromData(gotdata);
+  console.debug('grid:',  grid);
   
   for (var argi in args.all) {
     var argkey = args.all[argi][0], argval = args.all[argi][1];
@@ -566,6 +594,7 @@
     url: url,
     dataType: 'jsonp',
     jsonpCallback: 'jsonp',
+    cache: true,
     success: function(data, status) { return wrap(gotData, data, status); },
     error: function(data, status) { return wrap(gotError, data, status); }
   });