Given this Google Apps Script script:
'use strict'
const foo = 2;
function bar() {
Logger.log(foo + 2);
}
Running the function bar
results in a TypeError: redeclaration of const foo.
Why? How is foo
being redeclared?
UPDATE: Using the new runtime (V8) the code in the questions doesn't throw the error anymore, but disabling it, the old runtime (Rhino) still throws the error.
From Apps Script const scoping problems
Avoid using const in Apps Script for now. It just doesn't work as it should. For now it's just a half baked version of var.
The above was referring to using the runtime available at the time that it was published, before the new runtime was available.
From the same source
Apps Script is based on ES3 JavaScript, with quite a few additions from ES5 and even ES6.
To read the primary source go to https://developers.google.com/apps-script/guides/services/#basic_javascript_features
Seems like it's due to spotty implementation of ES6. I still get the error if I remove foo from the function, so the error is coming from the global const declaration. The below code produces the same error, but no error if you comment out const foo.
const foo = 2;
function bar() {
const bar = 2;
Logger.log(bar + 2);
}
See Google Apps Script Javascript Standard Support, in particular the first comment.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With