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"を選択する)
- 保存ダイアログが表示されるので、
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を操作したい。