GASがV8エンジンにバージョンアップ


突然、一日何度もタイマー実行していたGASがエラーを吐き始めた。
もろもろ調べると、GASがV8エンジンにバージョンアップしていて対応してない書き方部分で落ちていた。

どうも「for each」ループがだめになったみたいで


// 以前の書方(こける!)
var obj = {a: 1, b: 2, c: 3};
for each (var value in obj) {
  Logger.log("value = %s", value);
}
      

// V8 
var obj = {a: 1, b: 2, c: 3};
for (var key in obj) {  // OK in V8
  var value = obj[key];
  Logger.log("value = %s", value);
}
      

もろこれで落ちてました。

V8のバージョンアップの公式ガイド
https://developers.google.com/apps-script/guides/v8-runtime/migration
を読むとほかにもいろいろ変わってるとこあるので
GAS使ってる人は、一度は目通しといたほうがいいかも

基本的にはなんといっても
letが使えるようになったり、
下記のような中途半端なconstがちゃんとしたものになったり

// 以前
const x = 1;
x = 2;          // No error
console.log(x); // Outputs 1
//x = 2が無視ってどういうこと・・
//落としてよ!



// V8 runtime
const x = 1;
x = 2;          // Throws TypeError
console.log(x); // Never executed

      

と歓迎すべき点がほとんどなのですが、
上記のような、既存ソースに影響あるところも細々あるようです。

0 件のコメント :

コメントを投稿