Control Script API

The table below lists the objects that are the most important in Control Scripts. Click through to the object to find a description and sample scripts.
See Control Scripts for information about this kind of scripts, how to insert them and what you can do with them.

Object Usage

Much of the Control Script magic is performed by setting one of the fields of the section object. Via the section object you can omit, select and clone sections; add a background to a Print section; add a header to an email; etc.
A section can be retrieved via the context that it belongs to, using merge.template.contexts.ContextType.sections["section name"]. For example: merge.template.contexts.PRINT.sections["Section EN"].

context Object that contains one context and its sections. It is accessed through the template object: merge.template.contexts.

To get access to one context, you have to specify the ContextType (see ContextType), for example: var printContext = merge.template.contexts.PRINT;.
Through the merge object you can find out which context is currently being merged: merge.context.

template The template object contains all contexts and sections. It is accessed through the merge object: merge.template.
merge The merge object gives access to the template with all of its contexts and sections .
channel (see Channel) The channel for which output is generated. This is registered in the merge object:

Note that the channel doesn't change when the output consists of different contexts. When generating email, for example, the channel is EMAIL, even when merging the Print context to attach it to the email.


The current record in the main data set. To get the value of a field in the record, use record.fields['fieldname'] or record.fields.fieldname.

Other objects that are available to Control Scripts

The list above isn't exhaustive: most of the objects listed in the Designer API (see Designer Scripts API) are also available in Control Scripts. Not all of those objects can be used in Control Scripts, however. This is because Control Scripts differ from template scripts in two ways:

  • Control Scripts don't have a selector, like template scripts do.
    A selector selects parts of the content of a section and stores them in the results object, so that they can be modified in the script. As Control Scripts don't have a selector, the results object can't be used there. Control Scripts don't touch the content - meaning, the text flow - of the sections.
  • Control Scripts run before all other scripts.
    When a template consists of several contexts, and these contexts are combined in the output - for example, when an Email is generated with the Print context as attachment - all scripts run once for each context, but Control Scripts always go first.
  • Last Topic Update: 24/01/2017 09:32
  • Last Published: 7/6/2017 : 9:49 AM