GoogleAppsScriptハンズオン(BootCamp 2011 Japan)

 GTUGのBootCamp 2011 Japan でGoogleAppsScriptのハンズオンに参加してきました。

セッション資料はこちらに公開されています。
Twitterハッシュタグは #bc2011jp #gas1

 本当はGAEのセッションに参加するつもりだったのですが、GAEコーナーはセッションではなくオフィスアワーだったらしく、急遽こちらに参加しました。

 Google Apps ScriptというのはGoogle Apps内で提供されているスクリプト実行環境で、自分の認識としては、マイクロソフトオフィスでいうところのVBA的なものという感じです。VBAをろくに触ったことはありませんが。。Script自体は基本的にJavascriptなので、jsを使える人なら言語自体の学習コストはほぼゼロです。

 例えば値を受け取って消費税分を加算して戻すような関数は下記のような感じでJavascriptそんまんまです。

function calc_tax(no_tax_price) {
  var inc_tax_price = no_tax_price * 1.05;
  return inc_tax_price
}

 ハンズオンでやったのは、TwitterAPIからJsonデータを取得・パースしてSpreadsheetに表示したり、Tasksと連携させたりといった内容。 時間内で最後まで終わらせることはできませんでしたが、Javascriptは一応知識がありますし、純粋に楽しくやれました。 皆がTwitterAPIにアクセスしたのでアクセス数制限にひっかかってエラーになっていたりといくつかハプニングはありましたがw

 GAS自体については確かに便利なので、自分で使うだけのちょっとした便利ツールを作ったりするのにはすごくいいんじゃないかとおもいますが、ExcelVBAがいろんなところで問題になってたりするように、GASもGoogleAppsにロックインしたものになってしまうので、業務上クリティカルなものを作るために使うべきではありませんね。
 GoogleAppsのサービス自体がいつどうなるかわかりませんし、メンテナンスできる人が多いとも思えないですし。構文はJavascriptと同じですが、例えばSpreadsheetにデータを書き込むなどはやはりSpreadsheetにロックインされたものになります。

var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getSheetByName("hoge");
var start_row = sheet.getLastRow() + 1;
var data = [
  [1,2,3], 
  [10,20,30]
];
sheet.getRange(start_row, 1, data.length, data[0].length).setValues(data);

 あとは、エラー内容によっては一度エラーになると二度とスクリプトエディタで開けなくなったりとか、結構致命的なところもあったりします。 その辺もうちょっと整備されてくると、ブラウザ上だけで作業できたり手軽に作れたりと良いところも多いので、使いどころを間違えなければ便利なツールだと思います。