はじめに
2020年2月にGoogle Apps ScriptがV8ランタイムに対応しましたが、実際に対応させてみるといくつか不具合が出ているので、備忘録としてここに書いていきます。
V8ランタイムを無効にする方法は複数のWebサイトに掲載されているので、そちらもリンクしておきます。
Google Apps scirpt(GAS)ランタイムをV8から旧バージョンに戻す方法(無効化・ダウングレード)
ScriptApp.getService().getUrl() の不具合
デプロイのテスト環境(dev環境)でgetUrl()をしても、devのURLが出力されません。
これは既知の不具合ですが、現在も特に治っていませんでした。
ファイルアップロードの不具合
Google Apps Scriptでファイルアップローダを作る
↑こちらにも記載のある、「V8ランタイムを使用するとアップロードしたファイルが壊れる」という不具合は、2021年11月の段階でも治っていません。
ですので、アップローダ機能を入れたい場合はV8をオフにするしか方法はありません。
トリガーの不具合(その1)
V8をオンにしている場合、タイマー系のトリガーが「We're sorry, the JavaScript engine reported an unexpected error. Error code INTERNAL.」というエラーを吐いて失敗してしまうときがあります。
発生頻度は少ないですが、原因は不明です。こちらもV8ランタイムをオフにすると発生しなくなったという報告が多いので、そこに原因があると考えられます。
4月頃特に発生報告が多かったようです。(参考)
トリガーの不具合(その2)
V8をオンにしている場合、トリガーをセットしようとして下記のエラーが出ることがあります。
「ストレージからの読み取り中にサーバーエラーが発生しました。エラーコード: INTERNAL。」
原因は不明です。V8をオフにすると発生しなくなったという報告をいくつか見つけました。
JDBCの不具合
Cloud SQL(MySQL)を使用してシステムを組んでいたのですが、100件ほどしか入っていない単一テーブルから単純なSELECT文を実行するだけでも妙に処理時間がかかり(10件しか取得しないようなものに10秒)、もしやと思ってV8オプションを削除したところ、高速に戻りました。
おわりに
自分が困った不具合はいまのところ上記の3件ですが、既知の不具合に関しても治る見込みはあまりなさそうなので、現時点ではV8をオフにしてコードを書いたほうが安定するかと思います。