Google Apps scirpt(GAS)ランタイムをV8から旧バージョンに戻す方法(無効化・ダウングレード)

Google Apps Script(GAS)が2020年2月にV8ランタイムに対応するようになりました。

ただ、これまでに作成したスクリプトにV8ランタイムを有効化すると、動作がエラーしたり実行速度が遅くなったりします。

そうした場合にV8から旧バージョン「Rhinoランタイム」に戻す方法を解説します。

2020年2月にV8ランタイムにも対応

2020年2月にGoogle Apps Script(GAS)のランタイムがV8に対応するようになりました。

V8ランタイムはGoogleがオープンソースで開発を行っているJavascriptエンジンです。

現在のJavascriptの標準的な規格となりつつあるECMAScriptに準拠しています。

これまでGASで使われていたのは「Rhinoランタイム」 は、ECMAScriptの記法が使えない状態でした。

古いランタイムで作成済スクリプトが動作不良も

これまでRhinoランタイムで作成していたGASのスクリプトも、スクリプトエディタを開いた際に表示されるメッセージ、

このプロジェクトで Chrome V8 を搭載した新しい Apps Script ランタイムを有効にします。

で「有効にする」のリンクをクリックすると、V8にアップデートできます。

しかし、旧Rhinoランタイムで動作していたGASスクリプトをV8に変更すると、実行エラーする場合があります。

  • コードがV8に違反する記述方法
  • ライブラリがV8未対応
  • V8だと実行に時間がかかる

上記のような理由でうまく実行できなくなってしまうケースが報告されています。

GASランタイムをV8から旧版に戻す方法

そこで、Google Apps ScriptのランタイムをV8から旧バージョンのRhinoランタイムに戻す方法について解説します。

GASスクリプトスクリプトエディタ上で設定することで、V8ランタイムの適用を無効にできます。

1.V8から戻したいGASプロジェクトのスクリプトエディタを開きます。

V8ランタイムが適用されている場合は、「このプロジェクトはChrome V8を搭載した新しいApps Scriptランタイムで実行しています」と表示されます。

2.メニューバーにある「実行」から「Chrome V8を搭載した新しいApps Scriptランタイムを無効にする」をクリックします。

これでV8ランタイムから旧バージョンへの戻しは完了です。

V8からの戻しを行うと、「Future executions of this project will run with Apps Script Legacy.(このプロジェクトの今後の実行はレガシーなApps Scriptで実行されます。)」というメッセージが表示されます。

※V8ランタイムから旧バージョンへの戻しはGASプロジェクト単位で戻しが可能です。

将来的にはV8に移行することが推奨

V8から旧版に戻す方法を解説しましたが、今後のGoogle Apps Script(GAS)はV8をベースにした開発が行われていきます。

その方がGASがベースとしているJavascriptのアップデートと同期を取ることができるからです。

旧RhinoのバージョンではモダンなJavascriptの構文がエラーするため、保守性が低いデメリットが生じています。

そのため、V8の前のRhinoランタイムで動かしているスクリプトも将来的にはV8に移行していくことをオススメします。

ただし、現状はまだV8に移行したばかりなので、上手く動作しないケースやログ出力が遅いなどのV8には弱みがあります。

一定期間ランニングされ、GASのV8が洗練されるタイミングを待ち、V8にアップデートする予定は立てておきましょう。

まとめ・終わりに

今回、Google Apps Scriptのプロジェクト・スクリプトをV8ランタイムに移行してしまった場合に、古いRhinoランタイムに戻す(ダウングレードする)方法を解説しました。

残念ながら、旧ランタイムで正常に動作していたスクリプトをV8にアップグレードすると、動作不良を招くことがあります。

そうした場合は、V8から旧バージョンに戻すことで正常に動作させることができます。

V8にアップデートして、上手くGASが実行できなくなった場合はこのV8の戻し方法を試してみて下さい。