Google Apps Scriptをもっとカジュアルに使ってよいかも
これまでの考え方とは正反対のアプローチになるが、複雑なロジックを持たずに定期実行する cron x sh のような使い方ならもっとカジュアルに使ってもよいのではないか?と思い立ち、試したみたところ悪くないという結論になったので、その紹介。
まとめ
- 2022 年 4 月現在、Script Editor が十分優秀
- deploy を利用することでバージョンを固定でき、ロールバックも可能なので壊しても大丈夫(安定したら deploy を使おう)
- GCP プロジェクトと紐づけて log を吐いておけば動作の監視もできるので本格的な利用に入ってもある程度安心
たぶん増えすぎたら管理が破綻するので、その前に何らかのルールは必要だと思うけど。例えばリスクの大きなもの(関係者が多い、壊れると業務が止まる)は GCP プロジェクトと紐づけてレビュー、監視対象とする、とか。
できるだけ何も準備しないでできること
ライブラリが必要ない場合
開発は Script Editor で十分
- log や debug の扱いは 2021 年以前と比べものにならないくらいによい
- 書き味も V8 エンジンであればほぼモダン JS そのまま
- JSDoc 読み取ってそれっぽく定義元の情報も参照できる(VSCode っぽい)
残念ながら TypeScript は使えないが、Script Editor の体験はかなりよい。ローカルで同じ機能を再現しようと思うとそれなりに手間が掛かる。
ロールバック
ただしバックアップやロールバックについては不安が残る
- 「あれ、この間までちゃんと動いてたのに」に戻せるように
- deploy を利用する
- deploy は原則外部や自分以外のアカウントへの公開の意味になってしまうが、「Web App」については「自分専用」が選べるのでこれで
- これで壊れてもロールバック可能になる
バックアップ
- 後から clasp で取ることもできる
- Drive API に依存しないので Editor add-on ( Container-bound Script ) でも問題ない(これはありがたい)
- アクセス権限だけ与えれば作成者以外がバックアップしてもよい
管理、監視
- 重要な役割を担うようになるとさすがに管理、監視したくなる
- GCP と紐づけると log を Cloud Logging に流せるようになる
- Logging から sink を用意しておくとそれなりに監視できそう(あれ、最近動いてなくない?とか)
余談
ちなみに自分がやったのは Container-bound Scripts で Spreadsheet の中のデータが再計算で変化しないように pure data としてコピーして別名で保存する、これを定期実行する、いわゆる snapshot を作成するもの。
Spreadsheet の range を表す文字列の取得方法が分からず困っていたところ以下の tweet に助けていただきました。
Range.getA1Notation()で取得できるんじゃないかと思います。https://t.co/FfWUQgPzqW()
— Masahiko Murakami (@fossamagna) April 18, 2022