LoginSignup
3
5

More than 3 years have passed since last update.

【GAS】V8 runtimeに切り替えるとき、claspの人はマニフェストを手動で書き換えること!

Last updated at Posted at 2020-02-10

あらすじ:

  • GAS (Google Apps Script) はJavaScript 1.6〜1.8という古い構文だった
  • 最近それがV8 runtimeというエンジンに変わってECMAScript準拠のナウい構文になった
  • Webのスクリプトエディタを使っている人はRunメニューから切り替えられる
  • claspを使っている人はローカルのappsscript.jsonを手動で書き換える必要がある

これでわかった人は読む必要なし。

詳細:

GASのランタイムがRhinoというのからV8というのに変更になった。
これまでのGASのJavaScriptは1.6〜1.8とかの古いものだったが、ECMAScript準拠のナウいものになったらしい。
めでたい。

参考記事: https://tonari-it.com/gas-v8-runtime/

上の「隣にIT」さん(いつもお世話になります!)の記事の執筆時点では、本来「実行>Enable new Apps Script runtime powerd by V8」で変更できるが、まだ「表示>マニフェストファイルの変更」でマニフェストファイルを表示して変更しなければならなかった、と書かれているが、2020-02-10では、ちゃんと実行メニューに「Enable...」と表示されるようになった。

ちなみにこれ、トグルになっていて、Enable状態で実行メニューを見るとDisable、Disable状態で見るとEnableが表示されていて、RhinoとV8が交互に切り替わるようになっている。
(Rhinoってオライリーのサイ本のサイだね!w)

また、ぼくの場合スクリプトエディタを開いただけで「V8が使えますがどうしますか」的なメッセージが出てきて(スクショ撮りはぐった><)、はい、と答えるだけでV8に切り替わった。

ただ、ぼくはclaspを使っていて、ローカル上にRhinoのレガシーソースが溜まっていた(※)。
これをpushしようとすると

? Manifest file has been updated. Do you want to push and overwrite?(y/N)

と言われる。

「y」と入力すると、マニフェストファイルも置き換わってしまい、レガシー状態に戻ってしまう。
デフォルトを受け入れてEnterを押下するか「N」と入力すると、マニフェストファイル以外のソースもアップロードされない。

この場合は、claspのローカル環境にあるマニフェストファイル、appsscript.jsonを手動で書き換える。
末尾だけ掲げる。

appsscript.json書き換え前
  "exceptionLogging": "STACKDRIVER"
}

=>

  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

jsonはjsと違ってケツカンマを許さないので注意。
https://qiita.com/daijinload/items/149410c975d6c008101e

これでpushするとV8状態のまま開発中のソースも正しくアップロードされる。
とりあえずスプレッド構文が使えてハッピーだ。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax

(この項終わり)

※過去のぼくのclaspとの格闘はコチラ:
https://qiita.com/query1000/items/259a60ba1be8743b858b
https://qiita.com/query1000/items/b25ae9deb700c7bf3212

追記:
2020-02-10現在、HtmlService.getUserAgent()がnullを返すという問題がある。
https://ja.stackoverflow.com/questions/62926/gas%e3%81%aev8-runtime%e3%81%a7htmlservice-getuseragent%e3%81%8c%e4%bd%bf%e3%81%88%e3%81%aa%e3%81%84

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5