この記事は賞味期限切れです。(更新から1年が経過しています)
このお題は以前にも何度か関連記事を書いていますが、 いずれの方法もパフォーマンスがあまり良くなかったり、安定性に問題があるなどしました。 今回はその辺を解決する為のライブラリを考えてみるお話です。

「新しくなったスプレッドシートと簡易データベース化」でGhostsheetが使えなくなったと書きましたが、新スプレッドシートでもAPIが整備された様で、2014年11月20日現在では正常に動作する事を確認しています。但し、スクリーンショット類は古い物なのでご注意ください。(スプレッドシートIDの取得はURLを参照されるのが良いでしょう)
つまり、サーバ上に加工したデータをキャッシュとして保存しておけば良いわけですね。

今回はPHPで書いてみました。こんな感じにはたらきます。
Googleドライブ で、簡易DBにするスプレッドシートを作成します。 一行目はフィールドのキーで構成されるヘッダ行にします。これらのキーを元にデータは加工されます。
キーの末尾に書かれている:integer 等の文字は、値の型です。 これを指定しておくと、データを加工する際に値をその型にキャストするように頑張ってくれます。 省略時の初期設定は”string”です。 “integer”, “boolean”, “float”等が使用できるほか、”array” ではカンマで区切った配列が、 “json” ではJSON文字列としてパースされた結果が格納されます。
「ファイル」→「ウェブに公開」でシートの公開設定ができます。

すると、次のようなURLが表示されるので、
https://spreadsheets.google.com/feeds/list/XXxxxxXXXxxxXx/od6/public/basic?alt=rss
太文字の “XXxxxxXXXxxxXx/od6” にあたる部分をコピーします。 これはこの後スプレッドシートのIDとして使用されます。
Ghostsheet.php を任意の場所に設置してrequireし、初期化してスプレッドシートを読み込みます。
require"Ghostsheet.php";$gs =new Ghostsheet();// キャッシュ用のディレクトリを設定しておきます// config() で配列を渡すこともできます$gs->set("cacheDir","./gscache/");$mySpreadsheetId ="XXxxxxXXXxxxXx/od6";$data = $gs->load($mySpreadsheetId);// $dataに加工されたデータが格納されますCode language:PHP(php)あとは、読み込まれたデータを好きな様に料理してください。
Ghostsheetには、Ajaxで簡単に利用する為のajax() メソッドが用意されています。ajax() は引数の配列(省略時のデフォルトは$_GET)を使用して処理し、JSON形式でレスポンスを返します。
require"Ghostsheet.php";$gs =new Ghostsheet();$gs->set("cacheDir","./gscache/");$gs->ajax();Code language:PHP(php)$.getJSON("ajax.php", {id :"XXxxxxXXXxxxXx/od6"}).then(function(data){console.log(data.items);});Code language:JavaScript(javascript)Ajax同様にJSONPでレスポンスを返すことも出来ます。 あまりおすすめできる機能ではないので、初期設定では無効化されています。
require"Ghostsheet.php";$gs =new Ghostsheet();$gs->config(array("cacheDir" =>"./gscache","jsonp" =>true// JSONP機能を有効に));$gs->ajax();Code language:PHP(php)受け取るidのホワイトリストを作ったり、 キャッシュディレクトリを非公開にするなどの対策をして使用した方が良いかな、と思います。
ざっくりとしか書いてませんが、APIドキュメントをどうぞ。
Googleスプレッドシートを簡易的なCMSとして使用する上で、気をつければならないこと。
「Webで公開」機能を利用しないと使えないライブラリなので、 そのスプレッドシートの内容は全て公開されてしまいます。
第三者が編集できるような状態にしない。 クライアントと共有したい場合は、限定公開でユーザーを決め打ちしましょう。
編集途中の状態で公開されて恥ずかしい思いをする可能性があります。 自動公開ではなく、編集が終わったら都度「今すぐ再公開」ボタンを押すようにしましょう。
私は、優秀なクローンでも出ない限り、テーブルの編集でGoogleスプレッドシートの右に出るサービスは無いと思っています。 そして、WYSIWIGではなくテーブルでの管理をしたいWebコンテンツというのも多くあるでしょう。 例えば、
などなど。このようなデータコレクション的なコンテンツは、 CMSでがんばって実装したりするよりはテーブルで管理出来たほうが メンテナンスの効率も良いと感じるのです。
また、WordPressはわからないけどExcelならいつもつかってるからわかるよ! というWeb担当者も多くいらっしゃると思います。 (専任の枠を割けずに総務の方が兼任しているようなケースでは特に)
そんなわけで、私はこのお題を執拗に探求しているのであります。