Redundant Department of Redundancy Department

I love SuiteScript 2.0, and 2.1 moreso, but the design of the API can lead to some extremely repetitious, verbose code, e.g. :

Image

While I love that records provide a fluent interface, which lets us chain methods and avoid repeating the variable name, there’s still a little left to be desired from the duplicated method calls (setValue, setValue, setValue, …). The problem gets magnified when you’re calling one of the more verbose methods over and over:

Image

Luckily, plain old JavaScript Arrays give us a lovely way of reducing our repetition and condensing this kind of code block. For all the fields we want to set, we construct an Array of the parameter Objects, and then use the Array’s forEach method to invoke our setValue on each Object:

Image

In 2.0, the only difference is:

.forEach(function (f) { rec.setValue(f); })

​In theory, we should be able to say

.forEach(rec.setValue)

without the full function expression, but it seems that NetSuite doesn’t bind the context correctly to rec and fails with an error.

The same pattern can be followed for many other common repetitious scenarios, like Search Filter/Column creation.

I’ve taken quite a liking to this pattern for condensing repeated method calls. How does it look to you?

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Related posts

January 7, 2021

Anything I wrote today about business would both feel and be inadequate. I simply can’t arrive at the words to express how I feel in this moment. So instead, here are a few helpful ...

Read More

December 20, 2020

2020 was a hundred swift kicks to the shorts and one giant kick in the ass. If you’ve lost people you love, if you’ve gotten sick or hurt, if you’ve lost your job, if ...

Read More

December 16, 2020

“I’ve been meaning to learn SuiteScript, but it’s hard to find the time …”“We’re slammed, and I just don’t have the time …”“I haven’t made the time …” All are variations of a theme ...

Read More

December 14, 2020

Last week we looked at mimicking the functionality of a REST endpoint with its own module (e.g. retrieving a User, or a list of Users, refreshing a token, etc). For complex integrations that rely on a large ...

Read More