GASでFusionTablesAPIを叩いてみた。
目標
ラズパイのCPU温度を定期的にロギングしてアップロードしたい。
前回
GoogleAppsScriptでHelloWorldしてみた。
今回
GASからFusion Tables APIを使う方法について確認する。
select文、insert文を実行できた。
対象環境
- Firefox 50.0
- Google Account
- Google Developers Console
- Google Drive
- Google Fusion Tables
- Google Apps Script
参考
こちらを参考にさせていただいた。感謝。
Google Apps Script
起動
- Google Driveにアクセスする
- Google Apps Scriptを起動する (メニューになければアプリに追加する)
- 以下のような画面が開くことを確認する
ついでにファイルの名前を任意に設定しておく。手順がわからないなら前回を参照。
Fusion Tables APIを使う
- メニュー→
リソース
→Googleの拡張サービス...
をクリックする Googleの拡張サービス
ダイアログからFusion Tables API
を探す無効
をクリックしてON
に変えるGoogleデベロッパーコンソール
リンクをクリックするGoogleDeveloperConsoleサイトが開く
- 検索ボックスに
fusion
を入力し、Enterキーを押下する Fusion Tables API
が表示されるFusion Tables API
のリンクをクリックする- 以下のようなページが表示される
有効にする
をクリックする有効にする
が無効にする
に変更されたことを確認するGoogleDeveloperConsoleサイトを閉じる
Google Fusion Tablesサイトに戻る
Googleの拡張サービス
ダイアログのOK
をクリックする
select文を発行する
- ソースコードに
FusionTables.
と入力すると、.
入力直後にインテリセンスが表示される Query
を選択するsql(String sql)
を選択するSQL
文を入力する- select文の結果は、以下のようにして参照するらしい。
function myFunction() { var res = FusionTables.Query.sql("select * from 01234567890abcdefghijklmnopqrstuvwxyzABCD;"); Logger.log("Timestamp, CpuTemperature"); for(var index = 0; index < res.rows.length; index++){ Logger.log("%s, %s", res.rows[index][0], res.rows[index][1]); } }
実行
する- メニュー→
表示
→ログ
をクリックする
[16-11-27 12:36:02:159 JST] Timestamp, CpuTemperature [16-11-27 12:36:02:160 JST] 2000/01-01 00:00:05, 36000 [16-11-27 12:36:02:160 JST] 2000/01-01 00:00:05, 36000 [16-11-27 12:36:02:161 JST] 2000/01-01 00:00:05, 36000 [16-11-27 12:36:02:161 JST] 2000/01-01 00:00:06, 36000 [16-11-27 12:36:02:162 JST] 2000/01-01 00:00:06, 36000 [16-11-27 12:36:02:163 JST] 2000/01/01 00:00:07, 36000 [16-11-27 12:36:02:164 JST] 2005/01-01 00:00:08, 38000
成功。念のため、Fusion Tables ファイルの内容と一致しているか確認する。
Fusion Tables ファイル
DocumentId
おさらい。
SQL文のテーブル名にはDocumentIdを使う。DocumentIdはFusionTablesファイルのURL内にあるdocid
パラメータの値である。FusionTablesでテーブルを作成するで作成したらURLが割り振られている。FusionTablesを開いてブラウザのロケールバーにあるURL内にあるはず。
レコード内容
テストデータとして、上記のようなレコードを挿入しておいた。
insert文を発行する
- select文のときと同様、insert文を作成し、実行する
- 対象のFusionTablesファイルを開いて挿入されたか確認する
成功。データが挿入されていた。
function myFunction() { var docId = "01234567890abcdefghijklmnopqrstuvwxyzABCD"; var sql = "insert into " + docId + " (Timestamp,CpuTemperature) values ('2016-01-03 12:34:56', 34567);"; var res = FusionTables.Query.sql(sql); }
課題
認証せずに実行できた、ということなのか?それとも、すでにログインしているから使えるだけ?よくわからない。
所感
認証やリクエスト上限の問題がなければ、とてもすばらしいサービスだと思う。
次はGASコードを外部実行する方法について調べる。ラズパイからHTTPリクエストしてGASコードを叩きたい。