Hatena::ブログ(Diary)

NAT’s Programming Champloo このページをアンテナに追加 RSSフィード

2011-05-05

[] Google Apps Scriptを使ってみた

最近、GoogleスプレッドシートGoogle Apps Scriptという、MS-ExcelでのVisual Basic for Applications(VBA)に相当するスクリプト環境があることを知った。

以下のような特徴を持ち、その気になれば、かなり本格的なアプリケーションが作れる。

このGoogle Apps Scriptを使って色々やってみたので、以下、実際に動かしてみたコード断片を紹介。

豊富なライブラリ

Google Developers

このドキュメントを見れば分かるように、様々なサービスが利用できる。

スプレッドシートへのアクセス

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 + ')');

スクリプトを実行するタイミング

Running Scripts in Response to an Event - Google Apps Script — Google Developers

このドキュメントにあるように、様々なタイミングでスクリプトを実行できる。

ユニークなのが、単体のサービスとして公開して、ブラウザからアクセスできること。

no title

以下のような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は便利かもしれない。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/NAT_programming/20110505/1304597238
リンク元