In this post, we’ll break down the basics of scripting in Flow Designer. We’ll review how to create a script in Flow Designer, walk through through a real-world example, and then provide some code snippets that you can refer back to next time that requirement is thrown your way.
You can create a script in several different Flow Actions (i.e. ‘Ask For Approval’ or ‘Update Record'). On the Action, you’ll see a scripting icon next to any field that allows scripting. This icon allows you to write inline scripts to modify values, do transformations, and more.
In the image below, you can see that there are 3 fields with scripting as an option. If you wanted to script a custom short description, you’d click on the icon that is circled:
After clicking the icon, the code editor will display the inline script as shown below:
Now that you’re in the code editor, you’re ready to start writing your script!
The inline script in Flow Designer gives you access to the fd_data object. This object can access data from previous actions and allows you to dot-walk to values.
The most common use for scripting in Flow Designer is to retrieve variable values and add them to a short description, update a record, etc.
To get the value of any variable (from the Requested Item / catalog item variables), you can dot-walk to retrieve it.
For example, if you wanted to get the values for ‘first_name’ and ‘last_name’ from your catalog item, then you’d do the following:
To send the value, transformation, etc. back to the Flow, you simply add a return statement in your script.
For example, if you wanted to set the short description as: “first_name + last_name has submitted a Request”, then you could do the following (building on top of the example above):
This will set the short description to the value in your return statement.
A cool feature of the inline script editor is that it will actually display a set of choices as you dot-walk. After you enter the dot (a period) after fd_data.trigger, a dropdown will display with options for the next step of the dot-walk. A couple examples are shown below:
The easiest way to learn how to write a Flow Designer script is to actually write one - so let’s get into it!
In our example, we’re going to write a script that will set the short description based on which user was entered into a catalog item. Our catalog item is used to request World Cup tickets.
The short description will read: [name] has requested World Cup Tickets
The item will ask for a name, which is a reference to the User [sys_user] table. If a name is not able to be found, then the user can type the name into a single line text field.
As shown below, when you check the ‘Name not found box’ - the ‘Your name’ field will switch to a single line text field:
For example, if you are looking for ‘Lionel Messi’ and can’t find him in the reference field, then you can enter his name into a single line text field. Since we want his name in the short description regardless of which field was used, we can utilize a script to accomplish this.
We’ll do our scripting in the ‘Short Description’ field on a ‘Create Catalog Task’ action (as shown below):
Let’s start by retrieving the variable values for both of the potential name fields, name_reference and name_text.
Now, let’s add some logic to determine which field was populated. We’ll set a new variable, name, equal to the value that was populated.
Let’s recap what happened above. If the user was able to find their desired name in the reference field (name_reference), then we will use that value. However, if the user had to manually enter a name into the single line text field (name_text), then we will use that value.
We can move onto the last part of the script, which will return the short description. Remember, we want it to say: [name] has requested World Cup Tickets. And more importantly, we want the [name] to be populated regardless of which name field the user entered.
Let’s assume that the user entered ‘Lionel Messi’ into the single line text field (name_text). The short description will be populated as shown below:
And that’s it! We’ve now walked through a full example of how you can utilize the inline script editor in Flow Designer to add logic to your Flow.
A quick note on a potential troubleshooting issue: if you notice that the Flow is not triggering from a script that you're working on, it may be due to setWorkflow. If setWorkflow is set to true in a script, it will prevent the Flow (among other things) from triggering.
In this post, we reviewed the basics of Flow Designer scripting, the fd_data object and it’s dot-walking features, as well as a real-world example of writing a script.
The goal of Flow Designer is to minimize scripting, however, sometimes you just need something that no-code can’t offer! This is where it pays to have a base knowledge of scripting in Flow Designer, and we hope this post helped get you there.
For more info and to see the official docs, you can check out inline scripts on ServiceNow’s official docs. Thanks for reading!