Google Apps Scriptでコードを書いて実行する方法を確認した。
目標
ラズパイのCPU温度を定期的にロギングしてアップロードしたい。
前回
しかし、insert文には認証が必要らしいことがわかった。
今回
cronによりバッチ処理したい。そのために認証などGUIによる手入力を一切せずに実行したい。
認証を回避する方法を考えてみた。Google Apps Script(GAS)によりFusion Tables APIを呼び出して実行することで、認証を回避できないか。
それを試す前に、Google Apps ScriptでHelloWorldして使い方の基礎を学んでみた。
対象環境
- Firefox 50.0
- Google Account
- Google Developers Console
- Google Drive
- Google Fusion Tables
- Google Apps Script
 
起動
- Google Driveにアクセスする
- Google Apps Scriptを起動する
(メニューになければアプリに追加する)
 
- 以下のような画面が開くことを確認する
 
タイトル編集
- タイトル部分をクリックする(無題のプロジェクト) 
- 任意の名前を入力し、OKをクリックする 
メッセージ表示
Google Apps ScriptはJavaScriptベースらしい。JavaScriptならalert()関数でメッセージ表示できる。
GAS alertで検索するとこちらがヒット。
Browser.msgBox("");とするとメッセージ表示できるらしい。が、エラーになった。結果的にはLogger.log("")関数を使うことになった。以下、メッセージ表示までの経緯を記す。
1回目
- myFunction関数内に- Browser.msgBox("Hello Google Apps Script !!");を追記する 
- 実行する(実行アイコンを押下する)
 (またはメニュー→実行→"myFunction"を選択する) (またはメニュー→実行→"myFunction"を選択する) 
- 保存ダイアログが表示されるので、OKをクリックする 
- プロジェクト名の編集ダイアログが表示される
 
- 任意のプロジェクト名を入力する
- OKをクリックする 
無反応…。実行されていないじゃん。保存しただけで終わりやがった。

2回目
仕方ないので、もう一度実行する。
- 実行する(実行アイコンを押下する)
 
- 承認ダイアログが表示されるので、許可を確認をクリックする 
- 許可のリクエストウインドウが表示されるので、- 許可をクリックする 
- エラーが表示された。
  このコンテキストからBrowser.msgBox()を呼び出せません。代わりにLogger.log()を試しましたか?というありがたいお言葉。
エラーになったけど、代替案を提示してくれたのでできそう。
3回目
- ソースコードを書き換える
 
function myFunction() { //Browser.msgBox("Hello Google Apps Script !!"); Logger.log("Hello Google Apps Script !!"); }
- 実行する
- メニュー→表示→ログをクリックする 
- ログ内容を確認する
 
無事、"Hello Google Apps Script !!"の文字列がログ出力されていることを確認できた。
ヘルプ
詳しいドキュメントはメニュー→ヘルプで参照できそう。英語なので読むのに苦労しそうだが。

所感
GASの基礎はわかった。次はGASからFusion Tablesを操作したい。