Finding Errors

Track down common problems in your flow

Are your variables empty or not showing the values that you expected?

Is Ultradox not generating your documents due to errors in your templates?

This guide described techniques how to find the root cause of them problem so that you can fix them.

Error types

In Ultradox you may face two different categories of errors:

Errors in your flow

The building blocks in your flow rely on each other. They also require the proper input to work correctly.

If you get errors when a building block gets executed or they produce unexpected results, please read the Logging and Debugging sections.

Errors in the template

If you get errors while generating documents from your templates, please check out the Template Errors guide.

Logging

The easiest way to check the value of a variable and to resolve formatting issues is to just print the variable in a comment.

You can see all executions of your flow in the Ultradox editor, even if your flow is triggered from a Google Form or via API.

Adding comments will greatly help you not only to structure your flow, but also to log data to the console to check if everything works as expected.

Let's say you have a variable called email that you are receiving from a form and you want to know the entered value, just add a comment building block and enter ${email}.

The entered email is ${email}

Whenever the flow is getting executed the email will be printed to the console.

You will see something like this in your console:

The entered email is [email protected]

As you can also use all rendering options in comments, you can also use this building block to test the proper formatting of text, dates or numbers.

Just create an empty flow and add a comment building block that prints the current date:

Today is ${now;date(op=EEEE)}

As the current date is formatted using the date renderer with the specified output pattern it will print the name of the current day to the console:

To
d
ay is Wednesday

Debugging

Ultradox comes with a fully featured debugger that will allow you to pause your flow at certain building blocks and to inspect all the available variables before resuming the execution.

You can not only debug flows started in the Ultradox editor, but also if they have been triggered by a timer, on Google Form submissions, by zapier, or via API.

 To debug your flow double-click on the breakpoint icon on the right of the building block where you want to start debugging.

The breakpoint icon will turn red which means that the next flow will be paused and can be inspected in the debug panel of the Ultradox editor.

The next flow that will run after activating the breakpoint will stop when reaching the building block with an active breakpoint.

The console will open and the debugger panel on the left will allow you to inspect the values of all variables.

Toolbar

You can then stop or resume the flow by using the buttons in the toolbar of the debugger panel.

 The step button will continue the flow but only next building block will be executed and will then halt again in the debugger.

 The stop button is an emergency stop to quit any running flows. This is a great way to end long running flows that may have been started by accident and are eating up your credits.

 The resume button will continue with the execution of your flow and will run to the end or until it reaches another building block with an breakpoint.

 Clicking on the clear console icon will remove all messages from the console.

Template Errors

Detect and fix errors in your templates

With Ultradox you can generate sophisticated documents from your templates by using tables, nested conditions, loops and more.

As you have a lot of powerful features, you will also have a lot of ways to produce errors. To help you track down errors in your templates Ultradox will display error messages right in your generated documents when generating documents in test mode.

Test mode

Activate test mode using the icon right in the main toolbar.

If the test mode is activated the canvas will turn green.

The following section explains the errors that may appear in your documents.

Invalid type

You have tried to format a variable using a renderer, but the value of the variable contains the wrong type.

If you for example have a variable ${name} that contains the value Daniel and you try to render it as a currency, you will get this error.

Invalid expression

You have typed something that Ultradox cannot understand. Please read the template essentials guide carefully.

Not an array

You have tried to access an element in a list or an array, but the variable is not an array.

Let's say you have a variables called name with the value Daniel then using a tag like ${name[2]} will result in this error.

Invalid array syntax

You tried to access an array, but you got the square brackets wrong. Make sure they are in the correct order and both brackets are present.

Index out of bounds

You have tried to access an element in a list or an array, but it does not contain as many elements as you expected.

Let's say you have an array names containing two names then accessing the third one like this ${name[3]} will result in this error.

Invalid index

You are trying to access an element in an array, but you have not used a legal index.

Let's say you have an array called names with three elements Daniel, Olli and Esther then you can access them using ${names[0]} which will print Daniel, ${names[2]} which will print Esther or ${names[last]} which will also print Esther.

If you try to access them using something like ${names[end]} or ${names[hello]} will not work and cause this error.

No call on a string

You are trying to access a variable as if it would have some properties, but it is just a string. Let's say you have a variable called name with the value Daniel then accessing something like ${name.email} will cause this error.

Property access error

You are trying to access a property of an object that does not exist. There are several situations that may cause this error.

Let's say you have loaded a worksheet with several columns. Then you will have a number of variables like ${mysheet[].myfirstcolumn}, ${mysheet[].mysecondcolumn} and so on. If you are now accessing a ${mysheet[0].hello} you will end up with this error as the column with name hello does not exist.

This error can also pop up if you are trying to access a property, but not in the correct way.

If we have the same example as before and you try to access ${mysheet[].myfirstcolumn} it will you the same error as mysheet[] is a list! it is containing all rows and you are asking for myfirstcolumn without accessing a specific row or using a loop to print all values.

Unmatched end

You have used an ${end} tag in your template, but you did not create a matching ${if …} or ${foreach …} statement.

Missing end

You have used an ${if.. } or ${foreach …} statement in your template, but you did not create a matching ${end} statement.

Else out of scope

You have used an ${else} tag in your template, but it is not inside an ${if …} statement.

Foreach incomplete

You have tried to create a ${foreach... } statement but you have forgotten to specify a variable name to access each item in the list.

Iterator mismatch

You are trying to create a list or table from your data, but you accessed different lists in the same table!

Let's say you have a list of authors and a list of books.

You can now create a table displaying the authors or the books - but if you mix both you will end up with an error:

Names of the authors

Titles of the books

$[authors[].name]

$[books[].title]

Incomplete tag

You have used invalid syntax. Please read the template essentials guide carefully.

This error will show up if you have not closed all opening brackets with the matching closing brackets.

The following table shows a number of common errors.

Expression

Description

${myvariable]

You have closed the open curly bracket { with a square bracket ]

${value;number(op=${pattern)}

You have used invalid syntax in the renderer parameter. Never use open brackets to access variables in the renderer parameters. In this example just use $pattern instead

Questions and Feedback

If you have any comments on this page, feel free to add suggestions right to the Google document that we are using to create this site.

If you are not yet member of the Ultradox community on Google+, please join now to get updates from our end or to provide feedback, bug reports or discuss with other users.

Last Updated: 9/14/18