Example Behaviour

Along with the example Behaviour and scripts outlined below, we have many demo videos aimed at helping you understand how the Behaviours feature works in ScriptRunner for Jira Cloud. Here's one of our Behaviours demo videos outlining How to pre-fill a template on a field:

Change Field Name Example

This example shows you how to change the name displayed for a specific field within the issue creation screen. Specifically, in this example, the field entitled Summary is changed to Ticket Title in response to the preferences of a particular team.

Follow the steps below to create the behaviour:

  1. Open the Behaviours tab and click the Create Behaviour button.

    You will see the Create Behaviour screen displayed:
  2. Enter a name and description for the behaviour. It's good practice to make these as descriptive as possible.
  3. Ensure the Enable Behaviour toggle is activated.
  4. Scroll down to the Behaviour Mapping section and select the relevant Project to which this behaviour will be mapped. For this example, choose the Customer Success project.
  5. Select the Issue Type that will be associated with the behaviour. For this example, choose the Task issue type.
  6. Scroll down to the Behaviours Scripts section and click Add Script. The Add Field Script pop-up window is displayed where you can add the behaviour script:

  7. Define when the script should run. This can be when the issue creation screen loads initially and/or in response to a field change. For the purpose of this example, check the On load option so that the summary field is renamed when the issue creation screen loads.

    WhenRuns
    On load

    The script will run when the create screen initially loads.

    You'll want to choose this option when you want the affected field to populate immediately upon opening the create screen. 

    For example, a field name or field description is changed, or a value is pre-populated into the field.

    On change

    The script will run when the specified supported field change happens.

    You'll want to choose this option when you've added a condition to the logic and identified a trigger that will update the affected field. 

  8. Choose Create View from the options to run the script on Create View or Issue View (or both). Refer to the Supported Fields/Methods, as not all field types are supported for issue view.
  9. Enter your code within the script box, as required. Note that you can directly open the API documentation from here. 
    Alternatively, you can select an example script from the Example Scripts option and modify the code as required, ensuring that you:
    • edit any variables, like custom field names, roles, or groups, in the example code so it's relevant to your instance.
    • choose the right time to run your script on: load and/or change so that it runs when needed.
    You can scroll or search for scripts by name in the Example Scripts and use the Copy Code button for scripts you'd like to paste into the Script box. 
  10. Click Save Script once you have confirmed the parameters as getFieldById("summary").setName("Ticket Title");.
    Now that you have created the behaviour to run when the screen loads, you will see the field entitled 'Summary' change to 'Ticket Title' when you create new tasks within the Customer Success project.
  11. Refresh your screen and click the Create button to see the behaviour in action. You are returned to the Create issue screen, where you will see your changes, as shown below:

    If you wish to revert back to the original field name, simply click Edit from the ellipsis menu next to your chosen behaviour, as shown below:

    and then deselect the Enable Behaviour button.

Example Scripts

We have provided a few example behaviour scripts below. However, you can find many more example scripts in the Adaptavist Library.

Dynamically show/hide a field in Cloud with Behaviours

In this example, when the Department field is selected and the Finance option is chosen, the line manager field is hidden, and the ticket category field is shown.  When the HR option is selected, the ticket category field is hidden, and the line manager field is shown. Both fields are hidden when the product field option is selected.

js
const departmentField = getFieldById('customfield_10035'); const ticketCategoryField = getFieldById('customfield_10037'); const lineManagerField = getFieldById('customfield_10036'); const changedField = getChangeField(); switch (changedField.getName()) { case 'Department': switch (changedField.getValue().value) { case 'Finance': lineManagerField.setVisible(false); ticketCategoryField.setVisible(true); break; case 'HR': ticketCategoryField.setVisible(false); lineManagerField.setVisible(true); break; case 'Product': ticketCategoryField.setVisible(false); lineManagerField.setVisible(false); break; } break; }

You can also refer to the video below:

Set a field value based on another supported field

This example configured on the On Change event shows how you can set the assignee field when the priority field is set to high and clear it when it is set to any other value.

const changedField = getChangeField(); const accountId = "123456-8545622-54522"; if (changedField.getName() === 'Priority') { const priorityName = changedField.getValue().name.toString(); if (priorityName === "High") { getFieldById("assignee").setValue(accountId); }else{ getFieldById("assignee").setValue(null); } }

Make field required when select list value selected

This example shows how you can make the ticket priority select list type field required when it has the Must Have value selected and optional when it has any other value.

const changedField = getChangeField(); if(changedField.getType() == "com.atlassian.jira.plugin.system.customfieldtypes:select" && changedField.getName() == "Ticket Priority" && changedField.getValue().value == "Must have") { getFieldById("customfield_10038").setRequired(true); }else{ getFieldById("customfield_10038").setRequired(false); }

This example also works with radio button fields if you change the field type key in the script as follows:

"com.atlassian.jira.plugin.system.customfieldtypes:select" to "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons"

Call a Jira API

This example shows how you can call a Jira API to search for a user and assign the issue to that user.

const assigneeName = 'Demo User'; const res = await makeRequest(`/rest/api/3/user/search?query=${assigneeName}`); const assignneAccountId = res.body[0].accountId; getFieldById("assignee").setValue(assignneAccountId);

Set default description

This example allows you to set default text in the description field when an issue is created, ensuring the field is only updated when it has no value in it.

const descriptionValue = getFieldById("description").getValue(); // If description field is wiki markup access the content property if (typeof descriptionValue !== "string") { const descriptionValueContent = descriptionValue.content.toString(); if (!descriptionValueContent) { getFieldById("description").setValue({ "version": 1, "type": "doc", "content": [ { "type": "paragraph", "content": [ { "type": "text", "text": "As a ", "marks": [ { "type": "strong" } ] }, { "type": "text", "text": "<type of user>" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "I want ", "marks": [ { "type": "strong" } ] }, { "type": "text", "text": "<to achieve some goal>" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "So that ", "marks": [ { "type": "strong" } ] }, { "type": "text", "text": "<some reason is fulfilled>" } ] } ] }) } }
On this page