2010-10-24
■[gas][javascript][apps]Google Apps Script プティ勉強会 UI周りの実装方法 紹介
今流行のサーバーサイドJSというと? 10人中9人以上がnode.jsという今日この頃ですがいかがお過ごしでしょうか?node.js凄いですよね、スゴイスゴイ、ゴイスーです。で、実際何に使いましょう?まぁ面白いですよね。
で、話は変わってGASです。GASとは、Google Apps Scriptの略でGoogle Docsのスプレッドシートの機能の一つです。スプレッドシートに所属する形で保存されます。実行はGoogleのサーバー上で行われ結果が返りますが、GASの特徴の一つで、Google内外のの様々なサービスのデータにアクセスすることが出来ます。
- カレンダー
- コンタクト
- メール(送信のみ)
- サイト
- マップ
- Docs
- UrlFetch
- xml
- Jdbc
などなどです。半分以上のサービスは無料アカウントで利用可能です。
今日のプティGAS勉強会で、Ui Servicesをいじったので紹介します。(要プレミアアカウントgmail.comアカウントでOK)
Ui Servicesを使うと、いろんなUIをスプレドシート上に作成することができるようになります。
こんなウィンドウを作成するためのコードは
function myFunction() { var mydoc = SpreadsheetApp.getActiveSpreadsheet(); // アプリを作成 var app = UiApp.createApplication().setTitle('GAS UI').setHeight(250).setWidth(200); // 要素を作成 var btn = app.createButton('btn'); // button var pushbtn = app.createPushButton('push btn').setWidth('100'); // push button var radiobtn1 = app.createRadioButton('radio btn'); var radiobtn2 = app.createRadioButton('radio btn'); var flxpnl = app.createFlexTable(); var file = app.createFileUpload(); // radioに要素を追加 radiobtn1.setText('radio1'); radiobtn2.setText('radio2'); // ボタン押下時用のハンドラを作成 var handler = app.createServerClickHandler('pushedBtn'); btn.addClickHandler(handler); // Verticalパネルを作成 var pnl = app.createVerticalPanel(); // パネルに要素を追加 pnl.add(btn); pnl.add(pushbtn); pnl.add(radiobtn1); pnl.add(radiobtn2); pnl.add(file); // アプリにパネルを追加 app.add(pnl); // アプリを表示させる mydoc.show(app); } function pushedBtn(){ var app = UiApp.getActiveApplication(); var mail_add = Session.getUser().getEmail(); app.close(); Browser.msgBox('メールおくりますよ'); sendMail(mail_add); Browser.msgBox('メールおくりました!'); } function sendMail(sendToAdd){ Browser.msgBox(sendToAdd); var dd = new Date(); var myFiles = [{fileName:"my_document.html", content:"Insert any HTML content here"}] MailApp.sendEmail(sendToAdd, "Attachment example", "Here is my document", {attachments: myFiles}); Logger.log("INFO: " + dd.toLocaleTimeString() + " " + "send to address: " + sendToAdd) };
詳細説明
”GAS UI”というタイトルの幅200、縦250サイズのアプリを作成する。
var app = UiApp.createApplication().setTitle('GAS UI').setHeight(250).setWidth(200);
ボタンや、ラジオの要素を作成して、パネルに追加して、アプリにパネルを追加する。よくあるパターン。
ボタンにイベントを追加するには
var btn = app.createButton('btn'); var handler = app.createServerClickHandler('pushedBtn'); btn.addClickHandler(handler);
ボタンを作成して、ハンドラーを作成しクリックイベントにハンドラーを登録する。イベントが発生すると"pushedBtn"が呼ばれるので、メソッドを作成しとく。(今回はメールを送信するようにしてみた)
function pushedBtn(){ var app = UiApp.getActiveApplication(); var mail_add = Session.getUser().getEmail(); app.close(); Browser.msgBox('メールおくりますよ'); sendMail(mail_add); Browser.msgBox('メールおくりました!'); } function sendMail(sendToAdd){ Browser.msgBox(sendToAdd); var dd = new Date(); var myFiles = [{fileName:"my_document.html", content:"Insert any HTML content here"}] MailApp.sendEmail(sendToAdd, "Attachment example", "Here is my document", {attachments: myFiles}); Logger.log("INFO: " + dd.toLocaleTimeString() + " " + "send to address: " + sendToAdd) };
サーバーサイドで動くので、printデバグが出来ないのでLoggerを使用する。
Logger.log('hogehoge')
これを仕込めば、ログが作成される。ログを見るためには、メニューバー>表示>ログから閲覧可能
Let's GAS!!
- 66 http://www.google.co.jp/url?sa=t&rct=j&q=google apps script addclickhandler&source=web&cd=4&ved=0CFMQFjAD&url=http://d.hatena.ne.jp/a2c/20101024/1287862370&ei=E2arTq3aKdGwiQfgnNzEDw&usg=AFQjCNGVPXpixr9ZWh6jH1TNkQ-JwcqVaQ&sig2=H5zkzz82Rzw
- 42 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/a2c/20101024/1287862370&ei=iz0pT9bkJqaKmQX1jZ2pAw&usg=AFQjCNGVPXpixr9ZWh6jH1TNkQ-JwcqVaQ
- 39 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=GoogleChromeOS
- 29 http://twitter.com/
- 28 http://www.google.co.jp/search?hl=ja&safe=off&biw=1353&bih=900&q=Google+Apps+Script UI&aq=f&aqi=g2&aql=f&oq=&gs_rfai=
- 23 http://d.hatena.ne.jp/
- 23 http://reader.livedoor.com/reader/
- 23 http://www.google.co.jp/search?num=100&hl=ja&q=google+apps+script+ui+services&aq=0&aqi=g1&aql=&oq="Google+apps+script"+"ui+"&gs_rfai=
- 20 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDUQFjAB&url=http://d.hatena.ne.jp/a2c/20101024/1287862370&ei=g65mT5bqN6yUmQXcwOCUCA&usg=AFQjCNGVPXpixr9ZWh6jH1TNkQ-JwcqVaQ
- 11 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=ファイルサーバ&aq=f&aqi=g4g-c1g-r3g-cr2&aql=&oq=&gs_rfai=



