前提
プロジェクトのバージョン切り替え
GASには、プロジェクトのバージョンを過去にデプロイしたものに即切り替える機能が用意されている。
公開 > ウェブアプリケーションとして導入 > プロジェクト バージョン
の画面で
- 「新規作成」を選ぶと編集中の最新コードが新しいバージョン番号でデプロイされる(普段はこっち)
- 過去バージョンを選ぶと過去の状態のプロジェクトが再デプロイされる(今回はこっち)
ちなみに ファイル > 版を管理
からは過去のデプロイをコメントとともに一覧できたりする。
定期実行処理
編集 > 現在のプロジェクトのトリガー
から「特定の処理を毎日4時台に実行したい」みたいなことができる。
「特定の処理」は global function になってさえいればなんでもいいっぽい。
発生した問題
- プロジェクトに破壊的変更を加える必要があり、通常の利用がない時間帯に開発バージョンをデプロイし、作業終了時には安定バージョンに戻すということをやっていた
- 安定バージョンをデプロイした際も、スクリプトエディタのコードは開発バージョンのままで放置していた。
- ところがある日、安定バージョンがデプロイされているにもかかわらず、定期実行処理が壊れているよとGASからエラーメールが飛んできた
- どうも定期実行処理に関しては、明示的にデプロイしたバージョンではなく、エディタで編集中だったコードがそのまま走るらしい
- うそーん
- どうも定期実行処理に関しては、明示的にデプロイしたバージョンではなく、エディタで編集中だったコードがそのまま走るらしい
まとめ
- 定期実行については、怪しい動き(トリガー設定されたfunctionを削除 → 安定バージョンをデプロイ →
現在のプロジェクトのトリガー
画面でfunctionが見つからないと警告が出続ける)を知っていたので、嫌な予感はしていた - よその基盤を使うときは、当たり前と思える挙動もしっかり確認をしておくべき
- とはいえ開発者としては、実行されるコードは明示的にデプロイしたバージョンに限定されていてほしいと思うはず
- せめてバージョン切り替えの画面に1行注意書きぐらいはあってもいいんじゃないですかねえ…… という気持ち