※ScriptDbは、現在、Deprecated(非推奨)となっており、間もなく使えなくなる予定です。現時点では利用できますが、今後を考え、利用しないことを強く勧めます。データベース利用には、「Google Cloud SQL」を利用下さい。
(http://libro.tuyano.com/index3?id=1062003)Google Apps Scriptは、本格的なWebアプリケーションサービスも作成できるように設計されています。が、この種のサービスを作成しようとすると、必ず引っかかってくるのが「データベース」の問題です。本格的なデータベースを必要とするのであれば、MySQLサーバーを立ててJDBC経由でアクセスする、といった手段はあります。が、そこまではできない、あるいはGoogle Apps Script標準の機能でシンプルに使えるデータベースがほしい、という要望は非常に多かったはずです。
スプレッドシートにデータを保存し、読みに行くという手もあります。がシートのセル数には限りがありますのでそれほど多量のデータは扱えません。それに、スプレッドシートはあくまでシートですから、値を指定のセルから読み込んだり変更したりするのもけっこう煩雑です。
実は、Google Apps Scriptにはもっとシンプルで非常にすぐれたデータベース機能があるのです。それは「
ScriptDb」と呼ばれるものです。これは、JavaScriptのオブジェクトをそのまま保存し管理できる「
オブジェクトデータベース」ともいえるものなのです。
ScriptDbは、オブジェクトをそのまま保存し、いつでも検索しとり出すことができます。といってもSQLデーアタベースではありません。簡単なクエリー指定機能を持っていますが、SQL言語ではありません。どちらかというと、
HTML5の
IndexedDbのような非SQLデータベースといえます。
●オブジェクトの保存この
ScriptDbは以下のようにしてオブジェクトを取得し、利用します。
変数 = ScriptDb.getMyDb();
こうして得られたオブジェクトは、
ScriptDbInstanceというものになります。この中に、オブジェクトの管理に関する機能がまとめられています。――まずは、「オブジェクトの保存」からやってみましょう。これは、驚くほどに簡単です。
《ScriptDbInstance》.save( オブジェクト );
たったこれだけです。これでオブジェクトが保存できます。他に説明することはなにもなし!
ただし、データベースとして
ScriptDbを利用するのであれば、保存するオブジェクトの内容をよく考えておく必要があるでしょう。データベースとして的確にオブジェクトを検索するためには、保存するオブジェクトをすべて同じ形式のものにしておく必要があります。オブジェクトごとに、中にある値がばらばらではうまく検索できませんからね。
では、実際の利用例を挙げておきましょう。下のリスト欄のスクリプトは、実行すると名前・メールアドレス・電話番号・年齢を「
personaldata」という種類のオブジェクトとして保存するサンプルです。実行すると、まず
Browser.inputBoxでそれぞれの値を訪ね、それらを一つの連想配列(すなわちオブジェクト)にまとめ、それを
saveします。
ここで注目して欲しいのは、最初にある
type: "personaldata"という値です。この
typeというものにより、オブジェクトの種類を特定しています。これにより、「そのオブジェクトはどういう種類のものか」を指定しているのです。ここでは
personaldataという種類を指定しています。これは、要するにオブジェクトの名前のようなものと考えると良いでしょう。