Use Script Field Processor
Summary
Here we provide additional information and examples about what can be achieved within the Script Field Processor.
Script Context
This table shows a subset of what is available, we host our own utility class javadoc, e.g. http://ppl-docs.s3-website-us-east-1.amazonaws.com/JEMH/4.1.33/com/javahollic/jira/emh/api/IJEMHVelocityContextUtils.html
API | Notes |
---|---|
| Get body content of email. Not available for preprocessing task. |
| Gets the Subject content of email. |
| Get all headers of a message. |
| Get value of a message header Parameters
|
| Set the value of a message header Parameters
|
| If the email being processed is commenting on an existing issue, then this context will contain the field values for the related issue. Allowing for this data to be used within the Script. Format used is as per the Get Issue response from the Jira REST API. Note: This is only available within the Script Custom Field default and the Script Field Processor. For more info about using Issue Data see: https://thepluginpeople.atlassian.net/wiki/spaces/JEMHC/pages/3861676043/Manipulate+Issue+data+in+Scripting+features#Showing-the-JSON-object-Values-and-structure |
| Adds output that is recorded during execution and shown in the processing report. Parameters
|
| Set the processing outcome of the script Parameters
Note: |
| Field processor and Script Rule only. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map |
| Searches within string values for matching content.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp |
Setting Custom Field Values via Script
Within the Script Field Processor values can be set within the script. Values are added to the Result Map in the Script Field Processor which will Overwrite any values already present in the resultMap.
Example
resultMap.set("priority", "High");
Using the Issue Context when commenting
Currently cannot be used at edit time. A email/Test Case will need to be processed to test the script
For more info about using the Issue Data see: https://thepluginpeople.atlassian.net/wiki/spaces/JEMHC/pages/3861676043/Manipulate+Issue+data+in+Scripting+features#Showing-the-JSON-object-Values-and-structure
When Commenting on issues you are able to use the issue
to get values from the issue. for example getting the issue Key, Reporter or any Custom Field. Below are some examples on how to extract specific values.
Note: The issue
context does not apply when creating an issue. This means that the issue
context will return “null”.
Getting the Issue Key
issue.key
Getting the issue ID
issue.id
Getting a Custom Field Value
In order to get the value from a Custom Field you will need to define the Custom Field Id for the relevant field as the field name is not stored within the Issue context. This is to ensure that the value is gathered from the correct Field.
Gathering a System Field Value
For most of the system fields you will be able to define the field name and it will return the value that is set on that field. Below is an example of how to get the name of the Reporter user
Examples scripts
Using Regex to extract a specific value from body and set as a field value
If you want to retrieve specific text from the email body then you can do so by searching the email body with a Regular Expression that will extract the matching values. The below example will search the email body and if found it will then apply the value to the relevant Custom Field.
Example Script:
Example Test Case:
Processing Report:
Here you can see the example mail processing report generated by JEMHC for this Test Case. Within the report it states that a value was matched and that it has applied this value to the example Custom Field.
Get a specific header value and then set as a Custom Field value
This example shows how you can extract a value from a specific header and then set this value as a Custom Field value.
Example Script
Test Case
Processing Report
Here you can see the example mail processing report generated by JEMHC for this Test Case. Within the report it states that a value was extracted from the header and that it has applied this value to the example Custom Field.
Drop an email if it is sent from a specific sender.
This script will check if the sender matches a specific address and if so then it will drop the email so there is no further processing.
Example Script
Test Case
Processing Report
Here you can see that the email has matched this condition and the email has resulted in being dropped.
Gather all email headers and set as a Custom Field value
This script will gather all of the email headers and set then as a Custom Field value.
Example Script
Test Case
Processing Report
Here you can see that the script has found all of the headers and their values and has set this onto the Paragraph Custom Field.
Dynamically setting a customer request type from X-Priority mail header
We can use