Google Apps ScriptからFusion Tablesに新規挿入・更新・削除する方法
以前、Google Apps ScriptでデータベースFusion Tablesの導入方法について書きました。
この時は読み込みだけの紹介でしたが、今回はデータの新規挿入(INSERT)、更新(UPDATE)、削除(DELETE)の方法について書きます。
[ad#top-1]
目次
その前にFusion Tablesの準備
Fusion Tablesの導入方法はこちらを参考にしてください。
テーブルは以下を準備しました。Googleブックマークのようなもにを作る前提でいます。DATEは日付型のシリアル値です。
データの新規挿入(INSERT)
テーブルにデータを新規挿入します。
ソースコードは以下の通り。
function Insert(){ var now = new Date(); //現在日時取得 d = Number(now); //数値型に変換 var docid = "1Br3...NU5R"; //urlに含まれるdocid var sql = "INSERT INTO " + docid + " (NAME, URL, FOLDER, Date) VALUES " + "('Facebook', 'https://www.facebook.com/', 'SNS', " +d+ ")"; FusionTables.Query.sql(sql); }
実行してみましょう。実行する場合はメニューの「実行」−「関数を実行」−(目的の関数名)を選択します。
実行後、Fusion Tablesをリロードすると以下の通りちゃんとデータが挿入されました。
データの更新と削除の前にROWIDの存在について
Fusion Tablesは普通のSQL文が使えて便利なのですが、データの更新と削除は単純にはいきません。
例えば、以下の構文はNGです。
UPDATE (docid名) SET FOLDER='SNS' WHERE NAME = 'Twitter';
UPDATEとDELETEに関しては、WHERE句にデータフィールドを使えないという決まりがあります。
じゃあどうするかというと、実はFusion Tablesのテーブルの裏にはROWIDというオートナンバリングされたIDが隠れているのです。
これは、SELECT *
では取得できません。ちゃんと明示してあげる必要あります。
SELECT ROWID FROM(docid名) WHERE NAME = 'Twitter'";
この一文をまず入れてROWIDを取得してから、データの更新/削除の際にWHERE句でROWIDを引っ掛けてやればOKです。
以上を踏まえて次に進みましょう。
データの更新(UPDATE)
次にデータを編集したいと思います。
よく見るとTwitterが「サーチエンジン」というFOLDER名になっていますね。これを正しく「SNS」に直してみたいと思います。
ソースコードは以下の通り。前述の通り最初にRAWIDを取得しています。
function Update(){ var docid = "1Br3...NU5R"; //urlに含まれるdocid //ROWIDの取得 query = "SELECT ROWID FROM " + docid + " WHERE NAME = 'Twitter'"; var result = FusionTables.Query.sqlGet(query); //ROWIDを指定して更新 query = "UPDATE " + docid + " SET FOLDER='SNS' WHERE ROWID = '" + result.rows[0][0] + "'"; FusionTables.Query.sql(query); }
ご覧の通り編集されました。
データの削除(DELETE)
今度はデータの削除です。
データの更新同様、最初にRAWIDを取得してそれをWHERE句で引っ掛けます。
function Delete(){ var docid = "1Br3...NU5R"; //urlに含まれるdocid //ROWIDの取得 query = "SELECT ROWID FROM " + docid + " WHERE NAME = 'Twitter'"; var result = FusionTables.Query.sqlGet(query); //ROWIDを指定して削除 query = "DELETE FROM " + docid + " WHERE ROWID = '" + result.rows[0][0] + "'"; FusionTables.Query.sql(query); }
ご覧の通りデータを削除できました。
[ad#ad-1]
スポンサーリンク