https://hacknote.jp/archives/10712/
でGoogle Spreadsheetsからデータを取得してグラフを描画する方法を書きましたが、追加情報があるので補足しておきます。
新しい Google スプレッドシートについて
Google SpreadsheetsとGoogle Driveが連携したことにより、新しい Google スプレッドシートが使えるようになりました。
URLからどちらか判断することができます。
旧バージョン
https://docs.google.com/spreadsheet/ccc?key=XXX
新バージョン
https://docs.google.com/spreadsheets/d/XXX
このページが説明がわかりやすいです。
http://blog.ecoteki.com/webservice/post-2458/
新機能について
新しい Google スプレッドシートになって変わったところは以下にまとまっています。
https://support.google.com/docs/answer/3541068?hl=ja
既存のスプレッドシートから新しいスプレッドシートへの移行方法
https://support.google.com/docs/answer/6082736?p=old_sheets_migrate&rd=1
既存のスプレッドシートは2014~2015 年の間に順次新しいスプレッドシートへ移行が行われますが、それまで待てない、という方は以下の方法で手動にて移行ができるようです。
https://support.google.com/docs/answer/3544847
URLについて
上記を踏まえた上で
google.visualization.Query
に指定するURLの生成を考えてみます。
新バージョンの場合
https://developers.google.com/chart/interactive/docs/spreadsheets#sheet-name
にある例をそのまま使えばOKです。
旧バージョンの場合
http://webos-goodies.jp/archives/51310352.html
の「データソース URL について」を参考にします。
http://spreadsheets.google.com/tq?key=XXX&gid=0&range=A1:AZ4&pub=0
みたいなURLになるかと思います。
DataTableで使える関数
公式ドキュメントはこちらになります。
https://developers.google.com/chart/interactive/docs/reference#DataTable_getProperties
日本語はこのサイトが見やすかったです。
http://so-zou.jp/web-app/tech/web-api/google/chart/interactive/data-table.htm
DataTableで行/列を入れ替える方法
残念ながら「行/列を入れ替える」方法はDataTableの関数にも、google.visualization.Queryの引数指定にもありません。
手作業で頑張るしかありません。この辺りを参考にしました。
https://groups.google.com/forum/#!topic/google-visualization-api/d_0XLvCEOFs
http://jsfiddle.net/RzfRx/55/
function transpose(dataTable) { var transposed = new google.visualization.DataTable(); transposed.addRows(dataTable.getNumberOfColumns()); transposed.addColumn('string', 'days'); for (var col = 0; col < dataTable.getNumberOfColumns(); col++) { for (var row = 0; row < dataTable.getNumberOfRows(); row++) { if (col === 0) { transposed.addColumn('number', dataTable.getValue(row, col)); } else { if (row === 0) { transposed.setCell(col, row, dataTable.getColumnLabel(col)); } transposed.setCell(col, row + 1, dataTable.getValue(row, col)); transposed.setFormattedValue(col, row + 1, dataTable.getFormattedValue(row, col)); } } } return transposed; }