What is the recommended way to deal with potentially null arrays when running a script as part of an automation?
I’m setting up an automation flow that runs a script and as part of the script I’m calling
record.getCellValue() which oftentimes will be null. When using the scripting block, I’ve handled this by using the nullish operator, like this:
let array = record.getCellValue() ?? ;
That way I always have an array, even if empty, and not null.
When trying to re-create that script in an automation though, I get this error:
I would’ve expected both scripting environments to have the same support. Am I missing something here? And if
?? isn’t supported, what’s the best way around it? I’m working with a lot of arrays so would like something succinct.
Thanks for any help
Automation scripts do not support everything that Scripting app supports, including the nullish operator (??) and option chaining (?.)
You can use a ternary operator.
let array = record.getCellValue() ? record.getCellValue() : ;
Just for the record, if you are sure your cell value will always be of type Array, using the logical OR operator (
||) is equivalent to using the nullish coalescing operator (
let array = record.getCellValue() || 
|| will result in a type conversion for empty strings (they become empty arrays, which, depending on your use case, may or may not be what you want), and numeric cell values will produce unexpected results. Which is exactly why the nullish coalescing operator was introduced in the first place.
Thanks @kuovonne. It’s pretty frustrating how the two environments are so different but thanks for the suggestion!
Ah, yes, unwrapping optionals is part and parcel in Swift. It’s an afterthought in JS, really.
The logical operators are part of the core JS functionality (see the browser version support table at the end of this article for an idea how long they have been supported); they are available .