どんぐりでもわかるGoogle Apps Script の GUI Builder の使い方
MS Access のVBAと日々格闘中、パラダイムシフトはいつ来るのかと情報収集にいそしんでた所、
先日のGoogle I/O 2011 で発表された Google Apps Script(GAS)のGUIビルダーなる物を発見。
Accessのフォームの代替となるか!?
作ってみる
Google ドキュメントからスプレッドシートを新規作成して、スプレッドシートのメニューから「ツール」→「スクリプトエディタ」を選択
スクリプトエディタのメニューから「ファイル」→「ユーザーインターフェースを構築」を選択
するとGUIビルダーが起動する。
ためしにTextBoxとButtonを1つずつ貼り付けてみる。
Saveボタンを押すと保存される。名前はMyGuiのままにする。
一端スクリプトエディタに戻って、イベントハンドラ用の関数や実行用の関数を作る。
こんな感じで作成
//サービス起動時 function doGet(e) { var app = UiApp.createApplication(); //ここでGUIビルダーで保存したコンポーネントを呼び出す app.add(app.loadComponent("MyGui")); return app; } //スプレッドシートオープン時 function onOpen() { var doc = SpreadsheetApp.getActiveSpreadsheet(); //ここでGUIビルダーで保存したコンポーネントを呼び出す var app = UiApp.createApplication(); app.add(app.loadComponent("MyGui")); doc.show(app); } //イベントハンドラ function hoge(e) { var app = UiApp.getActiveApplication(); //メールアドレス表示 app.getElementById("TextBox1").setText(Session.getActiveUser().getEmail()); return app; }
最初、ここで作ったレイアウトどうやって呼び出したらいいのか謎だったけど、ヘルプフォーラム見たら書いてあった。
ポイントはGUIビルダーで作成したレイアウトを呼び出す箇所で
app.loadComponent("MyGui")
で、呼び出せる。ここの引数でGUIビルダーで保存した名前を指定する。
最後にトリガーでスプレッドシートオープン時の関数を紐づけておいて、保存。スクリプト名はtestに。
その後、GUIビルダーでボタンのクリックイベントに関数を紐づける。
イベントハンドラへの割り当ては、コンポーネント選択して右の方に出てくるプロパティで紐付けする。
GUIビルダーで、ボタンを選択すると右側にプロパティが表示されるので、下の方にあるEventsのOn Mouse Clickにイベントハンドラ(今回はhoge関数)を紐づける。
再度保存して完成
実行してみる(サービス)
ちなみに、スクリプトエディタから、サービスとして公開することもできる。
スクリプトエディタのメニューから「共有」→「サービスとして公開」を選択
公開範囲を選択してサービスを有効にするにチェック。URLもコピーしておく。
URLをコピーして貼り付けると出てきたーーー
ちなみに、匿名アクセスOKで公開するとこんなのが出る