Google Apps Script 用の CLI ツール clasp が便利

以前、部屋の気温や湿度、CO2 濃度を監視するために、Netatmo というモジュールを使って計測する仕組みを用意したことがあった。
Netatmo は Web API から計測データを取得できるので、これを Google Apps Script から取得して Mackerel に投稿するという仕組み。
以下の記事を参考にさせていただいた。

stefafafan.hatenablog.com

このスクリプトはずいぶん長いこと放置していたのだが、先日たまたま手を入れる機会があった。
暇だしちょっとリファクタリングするか、ということで最新の開発事情を調べてみると、clasp という CLI ツールが公式で提供されていることを知った。

clasp はスクリプトの作成や push / pull など、様々な操作をローカルから実行できるようになっている。
これだけでも便利なのだが、それに加えてなんと TypeScript のサポートも追加されていた。
Apps Script は JavaScript 1.6 をベースにしているらしい謎言語なのだが、clasp が TS を GAS にいい感じに変換してくれる。
(内部的には ts2gas が使われているっぽい)

qiita.com

qiita.com

あまりに驚いてテンションが上りきってしまったので、その勢いでスクリプトを全部 TS で書き直した。
API リクエストの部分をクラス化したり、キャッシュに型をつけたりして、かなり見通しの良いコードにすることができた。
また、console.log すると Stackdriver にログが流れるようになっていて、デバッグも以前よりやりやすくなっていた。
(GCP Project を紐付けると GCP の Stackdriver Logging で見れるようにもなるらしい)

Google Apps Script を初めて使ったときの感想としては、便利だけどスクリプトを書くのが大変…という感じだったのだが、
それをここまでモダンな仕組みにしてしまうのはすごいし、使っていてとても楽しい。