新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASでV8ランタイムがサポートされたことにより、ECMAScriptの構文が使用できるようになりました。

前回、以下の記事でその全体像についてお伝えしています。

祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
2020年2月6日、Google Apps Scriptが「V8ランタイム」をサポートしたという一報がありました。これにより、ECMAScript構文が使えるなど改善されましたのでその概要をお伝えします。

では、早速使ってみよう!

ということで、今回は、GASのプロジェクトについてV8ランタイムに切り替える方法についてお伝えしていきます。

では、行ってみましょう!

前提

2020/02/07執筆時点では、Rhinoランタイムがデフォルトなのですが、今後V8ランタイムがデフォルトになる可能性が高いと考えています。

その際には、本記事の切り替え方法は不要となりますので、それまでの間に有効な情報となります。

Rhinoランタイムのまま新構文を試す

よし!早速、新構文を試してみよう!

ということで、切り替え作業をせずに、Rhinoランタイムのまま新構文を試してみます。

公式ドキュメントにあるV8の新構文のサンプルコードを拝借して、以下のコードをスクリプトディタで入力してみましょう。

function myFunction() {

  // V8 runtime
  let s = "hello";
  if (s === "hello") {
    let s = "world";
    console.log(s);  // Prints "world"
  }
  console.log(s);  // Prints "hello"
  
  const N = 100;
  N = 5; // Results in TypeError

}

すると…

ステートメントの前に;がありません

ステートメントの前に ; がありません。

とのエラー表示。そもそも保存すらできませんでした。

V8ランタイムに切り替える

ということで、やっぱりランタイムを切り替える必要があります(当たり前)。

V8ランタイムに切り替える方法を見ていきましょう。

あ、ちなみにランタイムの切り替えは「プロジェクト単位」になりますので、使いたいプロジェクトで都度ランタイム切り替えの作業が必要になります。

メニューからV8ランタイムに切り替える

V8ランタイムに切り替えるには、スクリプトエディタのメニューからが簡単です。

スクリプトエディタのメニュー「実行」 > 「Chrome V8 を搭載した新しいApps Scriptランタイムを有効にする」を選択します。

V8ランタイムに切り替えるメニュー

すると、以下のようなメッセージが表示されます。

V8ランタイムに切り替えたときのメッセージ

Future executions of this project will run with Apps Script V8. Disable anytime via the Run menu.

これで切り替えは完了です。

メッセージ内に「実行メニューでいつで無効にできます。」とあるように、V8ランタイムに切り替え後は「実行」 > 「Chrome V8 を搭載した新しいApps Scriptランタイムを無効にする」が選択可能になりますので、いつでも戻せます。

V8ランタイムを無効にするメニュー

ていうか、そもそもRhinoランタイムを使っている場合は、以下のようなメッセージが表示されます。

V8ランタイムを有効にするメッセージ

Enable new Apps Script runtime powered by Chrome V8 for this project.

このメッセージの「有効にする」をクリックしてもV8ランタイムに切り替えることができます。

こちらのほうが簡単…!

てか、V8ランタイムに積極的に切り替えてほしいというGoogleさんの意図を感じますね。

マニフェストファイルで変更する

もう一つの方法として紹介されているマニフェストファイルを設定する方法も一応紹介しておきます。

マニフェストファイルを表示する

マニフェストファイルを表示するにはメニューの「表示」 > 「マニフェストファイルを表示」とします。

スクリプトエディタでマニフェストファイルを表示する

すると、「appsscript.json」というファイルが表示されます。

GASのマニフェストファイル

これがマニフェストファイルで、プロジェクトの色々な情報を設定するためのJSONファイルとなっています。

マニフェストファイルは、スクリプトファイルと同じようにエディタ上で編集できまして、メニューなどで設定できない設定項目については、このマニフェストファイルで設定することができます。

マニフェストファイルを編集する

そのマニフェストファイルですが、作成したばかりのスタンドアロンスクリプトで、デフォルトでは以下のようになっています。

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER"
}

V8ランタイムに切り替えるには、runtimeVersionフィールドを追加してその設定を「V8」にします。

つまり、以下のように編集します。

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

JSONファイルの編集に慣れていない方は、前の行の最後の「カンマ(,)」を忘れないように気をつけてくださいね。

マニフェストファイルにruntimeVersionフィールドを追加

そして、保存しましょう。

runtimeVersionフィールドについて

runtimeVersionフィールドについて補足しておきます。

runtimeVersionフィールドの設定値はデフォルトは「STABLE」で、現在は「Rhinoランタイム」が摘要されます。

なので、runtimeVersionフィールドがない場合はRhinoランタイムになるということです。

公式ドキュメントによると、runtimeVersionフィールドを「DEPRECATED_ES5」の設定値にしたときについて以下のように説明されています。

Rhinoランタイムを示します。この値を設定すると、V8への自動移行も防止されます。

ゆくゆくはすべてのプロジェクトがV8に自動以降される可能性が示唆されています。

V8ランタイムで新構文を実行する

これで、冒頭の新構文のスクリプトは構文エラーとならずに、保存できるようになりました。

やったー!

GASの新構文のスクリプトを保存した

では、V8ランタイムに切り替わったところで、新構文のスクリプトを実行してみましょう!

すると…

GASを実行するとTypeErrorが発生する

おや…

TypeError: Assignment to constant variable.(行 12、ファイル「コード」)

consで定義した定数は上書き禁止ということで、エラーを吐くサンプルでしたね。

修正して再度実行する

該当の行をコメントアウトして再度実行してみます。

GASでログを待機

ログを待機しています。お待ちください…

ログ表示…見慣れないメッセージですね。そういえば「console.log」でした。

少し待つと…以下のように表示されます。

GASでログが表示された

V8ランタイムではログまわりのUIも変更になったんでしたね。

ここについては別記事で解説をしたいと思います。

まとめ

以上、GASのプロジェクトについてV8ランタイムに切り替える方法にお伝えしました。

そのうち、V8ランタイムへの切り替えは、メニューからできるようになるかも知れませんし、デフォルトがV8ランタイムになるかも知れません。

それまでの間、V8ランタイム環境を使いたい場合は、本記事を参考ください。

次回は、ログと実行のUIについて解説します。

GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説
GASのアップデートで「V8ランタイム」がサポートされたことで、何が変わるかについてお伝えしています。今回は、GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説をしていきます。

どうぞお楽しみに!

連載目次:GASの「V8ランタイム」サポートで変わることとは

Google Apps Scriptに待ちに待ったアップデートがやってきました。「V8ランタイム」のサポート開始です。これにより、ECMAScript構文が使えるようになり、その他いくつかの改善が加わりました。このシリーズでは、V8ランタイムに切り替えることでできるようになったことについてシリーズでお伝えしていきます。
  1. 祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
  2. 新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法
  3. GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説
  4. GASの「V8ランタイム」アップデートを受けて私がやるべきことリスト

タイトルとURLをコピーしました