Scripting in ScriptRunner for Jira Cloud

ScriptRunner for Jira Cloud allows you to extend the functionality of Jira Cloud, executing scripts to interact with Jira as Workflow Extensions or Script Listeners. Scripts can be useful for automating regular actions, such as updating an issue during a transition or performing a calculation and storing the result in a custom field on the issue.

Outlined below are the various programming languages used for scripting and their associated features within ScriptRunner for Jira Cloud:

Script Variables

Scripting is not used for this feature, it utilises two fields to add a variable which you can call out in other scripts, such as password.

Overview

Groovy

Utilising the Groovy programming language you can respond to events and transitions and manipulate Jira using the REST API. Additionally, you can use the Enhanced Search feature to run JQL Functions in Jira Cloud and create filters for dashboards and scrum boards that use those functions.

Scripts using the Groovy language include Post Functions, Scripted Fields, Script Listeners, and Scheduled Jobs.

Typescript/Javascript

ScriptRunner for Jira Cloud uses Typescript/Javascript for the Behaviours feature, and the Script Fragments feature uses Javascript.

Jira Expressions

Jira expressions are used for conditions and validators along with some script execution conditions. 

JQL

A JQL query is required for the bulk clone issues built-in script, and a filter (created from JQL) for the bulk fix resolution built-in script.

Code Editor

Use the code editor to write scripts in ScriptRunner. The code editors use the Monaco editor. The browser-based code editor provides code completions, inline Javadoc lookups, inline find and replace, and error line indication. This editor has autocomplete for the following code: 

  • Groovy
  • Atlassian REST API
  • Automatically available variables

Keyboard shortcuts warning

Keyboard shortcuts may not work depending on other system-defined shortcuts.

Completions

The code editor automatically displays suggestions as you type. Suggestions are filtered as you type, so only relevant options are displayed. Use the arrow keys and Enter or Tab to select a suggestion. You can manually trigger completions with Control+Space.

When referring to a class, the code editor automatically adds the required import.

To save typing, use camel case abbreviations.

Smart Completions 

Press Ctrl+Alt+Space to show a list of completions that match the expected type of assignment or parameter type.

Parameters 

When typing method parameters, it is easy to forget the expected types. Parameter types and, where possible, names are shown for the given method. Use the up/down cursor keys to scroll through any available overloads.

Press Control+Shift+Space to view parameters when inside a method.

Javadoc

The code editor can help you understand the purpose of classes, methods, and properties by loading the associated Javadoc. The Javadoc is shown in the editor as a pop-up. To view the Javadoc, press Control+Space with completions open. It will be displayed automatically from then on. To close it, press Control+Space again. 

Find and replace

Monaco allows you to use find and replace in the code editor. To access find and replace, press ⌘+F (Mac) or Ctrl+F (Windows).
To search for text, enter it in the Find field. To access find and replace, press Option+⌘+F (Mac) or either Ctrl+H or Alt+Ctrl+F (Windows). 

Error line indicator

Errors in your script are highlighted in the right-hand panel of the script editor. Errors are highlighted inline, on the scroll bar, and in the right-hand overview ruler. When you have located an error, hover over the error with the cursor to see a summary.

Full-screen editing

To open the script editor in full screen, click the icon  or press F11 when the cursor is in the editor. To exit the full screen, press F11 or Esc twice when the cursor is in the editor. 

Restrictions

There are some limitations to the code editor; work is ongoing to reduce these limitations. As mentioned, Javadoc for Bamboo APIs, and ScriptRunner’s API (e.g. Behaviours) are unavailable. However, completions and parameter hints are available for all.

ScriptRunner for Jira Cloud domain allowlist

We advise all customers with a Cloud firewall to ensure that access to the *.connect.product.adaptavist.com wildcard URL is permitted.

When using the Behaviours feature, note that if your Jira instance is using IP allow-lists, you need to expand that to include the Atlassian Forge IP address range and all AWS IP ranges for the region you're in. Refer to Atlassian's IP addresses and domains for Atlassian cloud products and AWS IP Ranges for more details.

How to call external applications from ScriptRunner for Jira Cloud

ScriptRunner for Jira Cloud can execute rest calls to third-party REST APIs. The simplest way to test executing these calls is to use the Script Console.

To start integrating with an external application, we recommend following the steps below:

  1. Contact the support team for the external application and request some examples of how to use their REST API.
  2. Locate the REST API documentation for the external application.
  3. Test interacting with the REST APIs for the external application on the Script Console ensuring that Script Variables are used to store any passwords or authorization tokens.

We also recommend using the Post to Slack example Script Listener as it provides an example of how to call an external REST API from ScriptRunner for Jira Cloud and can be used as an example to create the script that you require.

HAPI

Currently ScriptRunner for Jira Cloud does not support writing scripts using HAPI, though this is actively in development.

On this page