読者です 読者をやめる 読者になる 読者になる

そのねこがうたうとき

物語偏愛者の詭弁と戯言

Google Apps Scriptでアラーム通知等を備えた高機能な家計簿をつくる

ノウハウ

Googleドキュメントで家計簿を作るというネタはわりとよく聞くもので、僕も2年ぐらい前からこの方法で家計簿を付けています。

1. Google Docs でスプレッッドシートを新規作成
2. フォームを作成
3. 自分のつけたいように、フォーム内の家計簿項目を設定
4. 完成したフォームを、iPhoneSafariで表示
5. ホーム画面に追加

Google ドキュメントにはフォーム機能があるので、それを利用してどこでもいつでもウェブ経由で家計簿が付けられるようにするというもの。クラウド上で家計簿をつけることになるので、端末を選ばず入力も閲覧も出来て非常に便利なのですね、これ。費目や入力項目も自分好みにカスタマイズできますし。

ただ、一方で弱点もあるわけで。Google ドキュメントのフォームは、受け取ったフォームの内容をシートの最下行に挿入するだけなので、そこまで複雑なことはできません。複数行同時入力すらできない。それにフォーム画面だけならスマートフォンからでもサクっと確認できるけど、集計したスプレッドシート自体をスマフォから見るのはさすがに厳しかったり。

その辺りを解消しようと手を出したのがGoogle Apps Script。要するにGoogle Docsでマクロが使えるというシロモノなんですが、これが想像以上にいろんなことができちゃうんでビックリ。

ベースはJavaScript

Googleらしいというか、スクリプトはJavaScriptで書きます。いわばサーバーサイドJavaScript。個人的にはこれ、かなりのポイントなのではないかと。ウェブにある程度通ずる人であればJavaScriptが書けるって人は少なくないでしょうし、イチから学ぶとしてもそれほど難しい言語ではありません。取りあえず変数の扱いと、if文とfor文とfunctionが書ければそれなりになんとかなるんじゃないでしょうか。導入の敷居は恐ろしく低いように思います。

スプレッドシートの操作はだいたいできる

すげー曖昧な書き方してますが。例えば値を入れ込む。例えば文字色やセル背景色を変える。思いつく限りのスプレッドシートへの操作はだいたいできます。新しいシートを用意し、既存のシートから値をコピーして持ってくるなんてことも可能。

cronっぽいことができる

作成したスクリプトは手動で実行するだけではなく、2種類の条件に応じた自動実行を仕掛けることができます。一つが「From SpreadSheet」。つまりスプレッドシートを開いたとき、編集したとき、フォームからデータを送信したときに自動実行できるというもの。もう一つが「Time driven」。お察しのとおり一定時間ごとにスクリプトを自動実行するもの。簡易的なcronと言ってしまってもいいんじゃないでしょうか。ちなみにGoogle Apps ScriptはHTTPアクセスもメール送付もできるので、文章を並べたスプレッドシートを作っておけば結構簡単にシンプルなTwitter botも作れてしまうのではないかと。

GUIが作れる

スクリプトでGUIを作って、GUIからスプレッドシートを操作することができます。これを極めればぶっちゃけフォーム機能要らないのかもしれません。私はすでに、GUIからフォーム経由で家計簿を入力する形に換えています。GUIからなら複数の項目を一気に送信することもできるし便利なのですよ。

はい。これだけでもう魅力としては伝わるんじゃないでしょうか。ポイントとしては?フォームからデータのインプットができること?スクリプトを自動実行できること?HTTPアクセスやメール送付ができること?GUIがあること。要はGoogle スプレッドシートをデータベースのようなものとして扱い、簡易的なウェブアプリのようなものを作ることができちゃうわけです。しかもJavaScriptで。無料で。サーバーとか借りなくても。これはホント、すげーなーと思いますよ。

話がちょっと脱線気味になりましたが、私が作った家計簿は今こんな感じです。恥ずかしいからソースは明かさないけど。

  • 1週間ごとの支出と収入の統計を、毎週土曜日にメールで送信してくれる
  • 支出が予め設定した閾値に達した場合、メールでアラートを送ってくれる
  • 月毎の固定費を自動で毎月20日に入力し、メールで入力結果を送ってくれる
  • フォームから入力する際、チェックボックスをONにしておくと、その時点での統計をメールで送ってくれる
  • 月が終わると自動で新しいシートに切り替わる
  • GUIから複数件同時入力ができる

ただ難点としては、あまりまだメジャーではなく、日本語での資料に乏しいことでしょうか。私が参考にしたのは以下のページ。


Google Apps ScriptのAPIを一部日本語化しているページ。


とにかく本当に何でもできる勢いなんで、とりあえず触ってみてはいかがでしょう。ホントこれはすごいです。もっと話題になっていいはず。