10分で出来る!Googleドライブでデータベースを使ってみた
Googleドライブは無料で様々な機能を使用することができて非常に便利です。
機能の1つに『Fusion Tables』というデータベースを使用できるものがあります。
この機能では、基本的なデータベースの機能はもちろん、チャート描画・Googleマップ連携も可能です。
導入は驚くほど簡単で、10分あればできてしまいます。
今回は、Googleスプレッドとの連携をテーマに『Fusion Tables』を使ってみます。
商品のラインナップの管理を想定して、簡単なデータを操作してみましょう。
データベースを作成する
早速データベースを作っていきましょう!
まずは『Fusion Tables』をアプリに追加します。
「新規」 > 「その他」 > 「アプリを追加」を押して、『Fusion Tables』を検索してアプリに追加します。
検索するのは以下のアプリです。
そうすると、アプリに「Google Fusion Tables」が追加されますので、それを押します。
すると以下の画面が現れます。
今回は空のテーブルを使いたいので「Create empty table」を選びます。
もうデータベースが作成できました。
できたデータベースは以下のように空になっています。
列の編集をしたい場合は、「Edit」 > 「Change Columns」で以下の画面で編集可能です。
今回は以下のデータを使っていきます。
IDは商品のユニークな番号、Nameは商品名、Priceは商品の値段です。
2つの商品だけ追加されている状態です。
Googleスクリプトエディタを設定する
次は、データベースを操作するスクリプト側の設定を行います。
お好きなスプレッドシートを開いて、「ツール」 > 「スクリプト エディタ」を開いて、プロジェクトに名前を付けましょう。
「リソース」 > 「Googleの拡張サービス」を開きます。
その後、画像下部の「Google API コンソール」のリンクから、FusionTablesのAPIを有効にします。
これで、スクリプト側の設定が完了しました。
データベースをスプレッドシートに表示する
データベースとスクリプトの準備が整いました。
では、データベースから商品ラインナップを取り出して、スプレッドシートに出力してみましょう。
以下のコードを、そのまま貼り付けます。
ただし、xxxxxxxxxxxのところには、FusionTablesの「docid=」以降のパラメータに置き換えてください。
※「#rows:id=1」部分は不要
var docid = "xxxxxxxxxxx";
function getDB() {
// SQL文を作成
var sql = "SELECT * FROM " + docid;
// FusionTablesのAPIを使って、SQLを実行
var result = FusionTables.Query.sqlGet(sql);
// スプレッドシートを更新する
updateSheet(result);
}
function updateSheet(result){
if (!result) return;
// 現在のアクティブなシートを取得
var activeSheet = SpreadsheetApp.getActiveSheet();
// 一旦シートのデータをクリアする
activeSheet.clear();
// テーブルの列名を表示する
for(var columnIndex=0; columnIndex < result.columns.length; ++columnIndex){
activeSheet.getRange(1,columnIndex + 1).setValue(result.columns[columnIndex]);
}
// テーブルのデータを表示する
for( var rowIndex=0; rowIndex < result.rows.length; ++rowIndex){
var row = result.rows[rowIndex];
for( var columnIndex=0; columnIndex < row.length; ++columnIndex){
activeSheet.getRange(rowIndex + 2, columnIndex + 1).setValue(row[columnIndex]);
}
}
}
貼り付けたら、getDB関数を実行してみましょう。
問題なければ、スプレッドシート側にDBが出力されます。
ここまでで、問題なければ10分あれば十分できたかと思います。
もし上手く動いていなければデバッグしましょう!
ログ出力は「Logger.log(出力したい内容)」で可能です。
行の追加・変更・削除をやってみる
商品ラインナップをデータベースから取り出しましたが、次に新商品の追加や、商品の値段変更、商品の削除を行います。
先程のコードに、以下のコードも貼り付けてください。
function insertRow(){
var sql = "INSERT INTO " + docid + " (ID, Name, Price) VALUES ('300', '商品3', 4000)";
FusionTables.Query.sql(sql);
}
function updateRow(){
var sql = "SELECT ROWID FROM " + docid + " WHERE ID = '300'";
FusionTables.Query.sql(sql);
var rowid = FusionTables.Query.sql(sql).rows[0];
var sql = "UPDATE " + docid + " SET Price = 5000 WHERE ROWID = '" + rowid + "'";
FusionTables.Query.sql(sql);
}
function deleteRow(){
var sql = "DELETE FROM " + docid + " WHERE ID = '300'";
FusionTables.Query.sql(sql);
}
insertRow関数は、IDが300、Nameが商品3、Priceが4000の商品を追加します。
updateRow関数は、ID300のデータのPriceを5000に変更、つまり商品の値段を変更しています。
FusionTableのupdateは少し特徴的で、ROWIDに対してクエリを実行する必要があるので気をつけましょう。
deleteRow関数は、ID300の行を削除、つまり商品を削除しています。
それぞれ実行後に、getDB関数を実行すると、スプレッドシートにデータが反映されるかと思います。
まとめ
今回は、Googleドライブの『Fusion Tables』を使ったデータベースと、Googleスプレッドシートを連携する方法を説明しました。
解説のため、スクリプトはなるべく簡単にしました。
SQL文をもっと作り込めば、「特定の列だけ出力」「特定条件の項目だけ抽出」「別のデータベースと連携」したりすることも可能です。
また、『Fusion Tables』では、Googleマップとの連携や、チャートの描画も可能ですので、ぜひ使っていただければと思います。
-
お問い合わせ
SiTest の導入検討や
他社ツールとの違い・比較について
弊社のプロフェッショナルが
喜んでサポートいたします。 -
コンサルティング
ヒートマップの活用、ABテストの実施や
フォームの改善でお困りの方は、
弊社のプロフェッショナルが
コンサルティングいたします。
今すぐお気軽にご相談ください。
今すぐお気軽に
ご相談ください。
(平日 10:00~19:00)
今すぐお気軽に
ご相談ください。
0120-315-465
(平日 10:00~19:00)
グラッドキューブは
「ISMS認証」を取得しています。
認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業
「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。