GASのトリガーでJavaScript エンジンで予期しないエラー問題

2021年4月8日頃から、Google Apps Scriptにて、トリガーにて設置してる関数等が「JavaScript エンジンで予期しないエラーが発生しました。エラーコード: INTERNAL。」という名のエラーを吐いて、実行を停止する障害がありました。

一時はこの件は解消されたかのように見えましたが、再び、4月21日今朝から再度同様のエラーが再発し始めています。このエラーについて追跡してみました。

エラーの確認

エラーが発生してる場合、Summary of failures for Google Apps Scriptという題名で、GMailに通知のメールが来ているはずです。その中身を読んで、対象のプロジェクトを開き、サイドバーから「実行数」を開くと、エラー発生時刻や内容で確認が可能です。

図:エラーの確認

図:エラーの通知

エラー解消法

このエラーは、Issue Trackerの情報によると、この問題は前年導入されたV8エンジンに起因する問題であるため、「Chrome V8 ランタイムを有効にする」のチェックを外し、V8ランタイムを使わない設定にする事で一時的に解消する事が可能です。

しかし、以下のようなケースの場合、容易にV8ランタイムを無効化が難しいので、Google側で解消するまで待つ必要があります。

  • すでにV8ランタイムで動作するようにコードを記述してしまってるケース
  • デバッグ環境をconsole.logやLogger.logに頼ってる場合

前者の場合、以前のRhinoエンジン用に書き直すのは現実的ではありませんし、ケースによっては簡単には書き換えはできません。また、後者の場合は、Stackdriver Loggingを使ってる場合はそちらで確認は出来ますが、効率が悪いです。

新たにIssue Trackerには以下の2スレッドが投稿されています。

図:チェックを外せばとりあえず動く

関連エントリー

パフォーマンスの改善や、これまで使えなかったJavaScript構文、ライブラリが使えるようになるため、V8エンジンは非常に優れている反面、こういったケースがまだまだ発生することを考えるとちょっと、V8エンジン最適化したコードで記述するのは躊躇われますね。

以下に以前作成したV8ランタイム検証のページにも今回のケース以外のトライブルなどもまとめているので、参照してみてください。

Google Apps ScriptのV8 Runtime対応を検証してみた