Google Apps Scriptを使ってみた
最近、GoogleスプレッドシートにGoogle Apps Scriptという、MS-ExcelでのVisual Basic for Applications(VBA)に相当するスクリプト環境があることを知った。
以下のような特徴を持ち、その気になれば、かなり本格的なアプリケーションが作れる。
- スクリプト言語としては JavaScript を使用
- 豊富なライラリを利用して、以下の事ができる
- 以下のタイミングでスクリプトを実行できる
このGoogle Apps Scriptを使って色々やってみたので、以下、実際に動かしてみたコード断片を紹介。
豊富なライブラリ
http://code.google.com/intl/ja/googleapps/appsscript/allservices.html
このドキュメントを見れば分かるように、様々なサービスが利用できる。
スプレッドシートへのアクセス
SpreadsheetAppを使って、スプレッドシートの参照や更新ができる。VBAと似たような感じ。
ss = SpreadsheetApp.openById(SPREADSHEET_ID); sheet = ss.getSheetByName(SHEET_NAME); value = sheet.getRange("A2").getValue(); sheet.insertRowsAfter(1, 1) range = sheet.getRange("A2:D3"); values = [["A2", "B2", "C2", "D2"], [1, 2, 3, 4]]; range.setValues(values);
外部サービス(HTTP)へのアクセス
UrlFetchAppを使って、任意のURLのコンテンツを取得できる。外部からJSON形式のデータを取得するコード例は下記になる。
var response = UrlFetchApp.fetch(JSON_URL); if(response.getResponseCode() != 200) { throw "error: response code=" + response.getResponseCode(); } json = response.getContentText(); objects = eval('(' + json + ')');
スクリプトを実行するタイミング
http://code.google.com/intl/ja/googleapps/appsscript/guide_events.html
このドキュメントにあるように、様々なタイミングでスクリプトを実行できる。
ユニークなのが、単体のサービスとして公開して、ブラウザからアクセスできること。
http://code.google.com/intl/ja/googleapps/appsscript/guide_user_interfaces.html#RunDecision
以下のようなdoGet()メソッドを用意して「サービスとして公開」すると、動的なWebページを作ることもできる。
function doGet(event){ var app = UiApp.createApplication(); var panel = app.createVerticalPanel(); panel.add(app.createLabel("Hello, World.")); panel.add(app.createLabel("現在時刻: " + new Date())); app.add(panel); return app; }
雑感
Google Apps Scriptは、今回初めて知ったのだが、かなり機能が豊富で、出来ることが多いのに驚いた。
多分VBAと比べると、関数の種類とかは少ないのだろうけど、Google Appsの各サービスや、メール、外部のWebサービスなど、様々なサービスと連携できる点は、かなり魅力的。
Google Apps Script以外に、Googleスプレッドシートを操作するプログラムを作る方法として、GoogleスプレッドシートAPIを使うという方法もある。でもGoogleスプレッドシートAPIだと、更新単位が行やセル単位で、単純な追加や変更、削除しかできなかったりする。その点、Google Apps Scriptだと、任意の位置での行やセルの挿入や変更、任意の範囲での値変更、カラムを指定しての行ソートなど、操作のバリエーションも多い。細かい操作をしたいなら、Google Apps Scriptの方が簡単そう。
Googleスプレッドシートにはフォームという機能があって、Webブラウザ上に表示したフォームから、データをスプレッドシートに追加することができる。このフォームとGoogle Apps Scriptを組み合わせれば、ちょっとしたWebアプリケーションを簡単に作れそうだ。このフォームを送信(データを入力)したタイミングでスクリプトを動かせば、データを加工してスプレッドシートに格納したり、外部のサービスにデータを送信することもできる。
Googleスプレッドシートを活用して様々なデータの管理や共有をしているなら、Google Apps Scriptは便利かもしれない。