About Scripting

T-ANIMPA-007-001 & T-HSCP-001-001

Harmony provides you with several scripting interfaces to allow you to automate and streamline certain tasks as well as to add custom functionalities to the application. Those scripting interfaces use Qt Script, a scripting language based on the ECMAScript standard which is very similar to JavaScript.

Harmony has four different scripting interfaces:

  • Harmony Scripting is the main scripting interface. Among many possible uses, Harmony scripts can automate workflows and functionalities in Harmony, create dialogs and perform batch operations on a scene.
  • The Extended Scripting Interface is a suite of modules for power users. It includes modules for editing drawings, for creating tools and toolbars and for executing Python scripts.
  • The Script Node is a special node which can take input from image or peg nodes, process its information in a custom-made script and output the processed peg or image information in the desired way. It allows you to create nodes that have custom behaviours. For example, the Maya Render Batch node is actually a Script Node configured to render your scene through an external rendering engine.
  • Control Center Scripting allows you to create scripts that can be launched in a command line interface via the Control Center application. They can be used to perform batch operations on the different elements of a Harmony Server database.
  • Python Interface is an interface displaying a Python representation of Harmony GUI and its current project. This interface can be used to create custom tools and automation tasks using Python.

Harmony Scripting Reference

This section of the documentation explains how to use the Harmony Script Editor, but does not teaches how to write scripts nor does it contain in-depth information about the classes and modules that are available in the Harmony scripting interface. The reference guides for each of the Harmony scripting interfaces are located on different documentation websites. These reference guides document all the modules and classes that are available in the Harmony scripting interfaces, as well as all of their methods and properties.

You can access the documentation for each of the scripting interfaces using the links below:

TIP

The scripting reference guides are also packaged with Harmony, so you can access them even if you have no Internet connection:

  • To access one of the Harmony scripting interface reference guides, open the Help menu at the top of the Harmony user interface and select Scripting Interface Documentation, Extended Scripting Interface Documentation or Script Node Documentation.
  • To access the Control Center scripting interface reference guide, open Control Center. Then, in the top menu of the Control Center user interface, open the Help menu and select Scripting Interface Documentation.

About Qt Script

Qt Script is an object-oriented scripting language based on the ECMAScript standard, like JavaScript and JScript. However, there are some differences that distinguish Qt Script from these other scripting languages, which are familiar to web programmers.

The Qt Script environment provides several standard classes and modules that are not documented in the Harmony scripting documentation. For a reference of the QT development environment, refer to the Qt Documentation website.

For a tutorial on writing JavaScript, refer to the JavaScript Tutorial section of W3Schools.

NOTES

As of Toon Boom Harmony 10.3, Toon Boom Animation has changed its scripting language from QSA script to Qt Script. Scripts are stored in plain text in files with the .js extension, instead of .qsa. This change to the API improves the software and gives access to 64-bit capabilities of the scripting interface.

Eery effort was made to ensure backward compatibility with QSA scripts. Hence, simple functions can be ported without making any changes, but class definitions must conform to the Qt Script syntax. Therefore, scripts that define classes must be updated. For detailed instructions on how to update from QSA to Qt scripts, see the Moving from QSA to Qt Script documentation of the Qt website.