I'm trying to create a class
with some fields on Google Apps Scripts. I can't even save the file. From what I understand of this SO answer, I'm using the correct syntax for class fields.
V8 runtime is enabled.
The error:
Syntax error: ParseError: Unexpected token = line: 5 file: Airtable_Class.gs
Line 5 is: foo = "bar";
Here's the whole code:
class FieldsTest{
foo = "bar";
}
This is a known issue. Add a star (★ on top left) to the issue, if you want this to be implemented.
https://issuetracker.google.com/issues/195752915
According to the tracker, it is supported, but it is blocked by the parser.
There's a way to simulate static fields in Apps Script. It involves using properties instead of a field. We can create a lazily initiated property that replaces itself with a field, using the following code:
class MyClass {
static get c() {
// Delete this property. We have to delete it first otherwise we cannot set it (due to it being a get-only property)
delete MyClass.c;
// Replace it with a static value.
return MyClass.c = {};
}
}
This approach is better than using a static property, because it also works when instantiating static objects or arrays. To confirm this works, we can use the following:
SpreadsheetApp.getUi().alert(MyClass.c === MyClass.c)
This will only evaluate to true if the object was generated once and stored. If the field remains a property, it will return false, because the object is generated twice.
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