Page History
...
Table of Contents maxLevel 1
Issue
...
Activity
Changes to issues are registered in the Issue Activity, but it is not known in advance how many changes are going to be made.
...
You can iterate a section over all the
...
activities of an issue. This allows you to create a table that dynamically grows according to the number of
...
existing activities. The notation is:
Activity Fields |
---|
...
Exportable Data
Description |
---|
Field | Description |
---|---|
Field | Returns the name of the field which the value was changed. |
From | Returns the old value. |
To | Returns the new value. |
The notation is:
Title | The title of the issue |
Summary | The summary of the activity |
Content | When an activity involves a change in the Issue contents, this field displays the new contents |
Author | The author of the activity |
AuthorEmail | The email of the author of the activity |
Published | The time the issue was published |
Updated | The time the issue was updated |
Categories | When an activity regards an Issue Status change, this field displays the new Issue Status |
Code Blockcode | ||||
---|---|---|---|---|
| ||||
#{for historyEntriesactivityEntries} ${fullname:HistoryEntriesActivityEntries[n].AuthorTitle} made changes ${dateformat("dd-MM-yyyy HH:mm:ss"):HistoryEntriesActivityEntries[n].CreatedSummary} #{for ch=HistoryEntries ${ActivityEntries[n].ChangedItemsCountContent} Field Name: ${HistoryEntriesActivityEntries[n].ChangedItems[ch].FieldAuthor} Old Value: ${HistoryEntriesActivityEntries[n].ChangedItems[ch].From} New Value: ${HistoryEntries[n].ChangedItems[ch].To} #{end} AuthorEmail} ${dateformat("dd-MM-yyyy HH:mm:ss"):ActivityEntries[n].Published} ${dateformat("dd-MM-yyyy HH:mm:ss"):ActivityEntries[n].Updated} ${ActivityEntries[n].Categories} #{end} or #{for h<VariableName>=HistoryEntriesCountActivityEntriesCount} ${fullname:HistoryEntries[h].Author} made changes ${dateformat("dd-MM-yyyy HH:mm:ss"):HistoryEntries[h].Created} #{for ch=HistoryEntries[h].ChangedItemsCount} Field Name: ${HistoryEntries[h].ChangedItems[ch].Field} Old Value: ${HistoryEntries[h].ChangedItems[ch].From} New Value: ${HistoryEntries[h].ChangedItems[ch].To} #{end} #{end} |
Issue Links
Content and Issue Mappings. Example: ${ActivityEntries[VariableName].Field}
#{end} |
Info |
---|
We suggest that you use the html function to render the data because almost all content is HTML, e.g., ${html:ActivityEntries[n].Title} |
Below are two examples of using the Activity iteration in a Word and Excel template:
Iterating_Activity_Entries.docx
Iterating_Activity_Entries.xlsx
Issue History
You Because it is not known in advance how many linked issues exist for an issue, you can iterate a section over all the linked issues history entries of an issue. This allows you to create a table that dynamically grows according to the number of existing linked issueschanges done.
Exportable Data
Field | Description |
---|
HistoryEntriesCount | Returns the |
Application Value | Description |
---|---|
JIRA | Link from the same Jira Instance |
External Jira | Link from the another Jira Instance |
Confluence | Link from a Confluence page |
External | External link |
Note: When the link you are iterating is of AppTypes External Jira or Confluence, the name is obtained using the Summary property.
number of changes made. | |||||||||
Author | Returns the user who made the change. | ||||||||
Created | Date of the change | ||||||||
ChangedItemsCout | Returns the number of fields changed in the current change. | ||||||||
ChangedItem |
|
The notation is:
Code Block | ||||
---|---|---|---|---|
| ||||
#{for linkshistoryEntries} ${Linksfullname:HistoryEntries[n].AppTypeAuthor} made changes ${Linksdateformat("dd-MM-yyyy HH:mm:ss"):HistoryEntries[n].LinkTypeCreated} ${Links#{for ch=HistoryEntries[n].KeyChangedItemsCount} Field Name: ${LinksHistoryEntries[n].Summary} ChangedItems[ch].Field} Old Value: ${HistoryEntries[n].ChangedItems[ch].From} New Value: ${LinksHistoryEntries[n].ChangedItems[ch].URL}To} #{end} #{end} or #{for <VariableName>h=LinksCountHistoryEntriesCount} Content and Linked Issue Mappings. Example: ${Links[VariableName].Field} #{end} |
The image below demonstrates an example of a Word template that iterates over linked issues.
or
The image below demonstrates an example of an Excel template that iterates over linked issues.
or
...
${fullname:HistoryEntries[h].Author} made changes ${dateformat("dd-MM-yyyy HH:mm:ss"):HistoryEntries[h].Created}
#{for ch=HistoryEntries[h].ChangedItemsCount}
Field Name: ${HistoryEntries[h].ChangedItems[ch].Field}
Old Value: ${HistoryEntries[h].ChangedItems[ch].From}
New Value: ${HistoryEntries[h].ChangedItems[ch].To}
#{end}
#{end} |
Issue Links
Because it is not known in advance how many comments linked issues exist for an issue, you can iterate a section over all the comments on linked issues of an issue. This allows you to create a table that dynamically grows according to the number of existing comments. The notation is:linked issues.
Exportable Data
Field | Comments FieldsDescription | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
AppType | The author of the comment | |||||||||
AuthorFullName | The full name of the author of the comment | |||||||||
Body | The comment | |||||||||
Created | The date the comment was posted | |||||||||
GroupLevel | The group level of the comment | |||||||||
Returns the Application Type. The values can be:
| ||||||||||
LinkType | Returns the Link Type. |
Note: When the link you are iterating is of AppTypes External Jira or Confluence, the name is obtained using the Summary property.
The notation is:
Code Block | ||||
---|---|---|---|---|
Code Block | ||||
| ||||
#{for commentslinks} ${CommentsLinks[n].AuthorAppType} ${CommentsLinks[n].AuthorFullNameLinkType} ${CommentsLinks[n].BodyKey} ${dateformat("dd-MM-yyyy HH:mm:ss"):Comments[n].CreatedLinks[n].Summary} ${CommentsLinks[n].GroupLevelURL} #{end} or #{for <VariableName>=CommentsCountLinksCount} Content and Linked Issue Mappings. Example: ${CommentsLinks[VariableName].Field} #{end} |
...
The documents below
...
demonstrates an example of a
...
template that iterates over
...
linked issues.
or
The image below demonstrates an example of an Excel template that iterates over issue comments.
or
Issue Worklogs
Issue Comments
Because it is not known in advance how many comments exist for an Because it is not known in advance how many worklogs exist for an issue, you can iterate a section over all the worklogs of comments on an issue. This allow allows you to create a table that dynamically grows according to the number of existing worklogscomments. The notation is:
Comments Fields | Description | ||
---|---|---|---|
Author | The author of the | ||
comment | |||
AuthorFullName | The full name of the author of the | worklogcomment | |
Body | The comment | of the worklog||
Created | The date the | worklogcomment was | createdposted |
Date StartedGroupLevel | The date the worklog was started | ||
Time Spent | The time spent in seconds | ||
TimeSpentFormatted | The time spent as displayed on Jira | ||
BilledHours | The billed hours in seconds (Belongs to Tempo Timesheets plugin) | ||
BilledHoursFormatted | The billed hours as displayed on Jira (Belongs to Tempo Timesheets plugin) | ||
group level of the comment |
Code Block | ||||
---|---|---|---|---|
| ||||
Code Block | ||||
| ||||
#{for worklogscomments} ${WorklogsComments[n].Author} ${WorklogsComments[n].AuthorFullName} ${WorklogsComments[n].CommentBody} ${dateformat("dd-MM-yyyy HH:mm:ss"):WorklogsComments[n].Created} ${dateformat("dd-MM-yyyy HH:mm:ss"):Worklogs[n].Date Started} ${Worklogs[n].Time Spent} ${Worklogs[n].TimeSpentFormatted} #{end} or Comments[n].GroupLevel} #{end} or #{for <VariableName>=WorklogsCountCommentsCount} Content and WorklogIssue Mappings. Example: ${WorklogsComments[VariableName].Field} #{end} |
Issue Sub-Tasks
The documents below demonstrate an example of a Word template that iterates over issue comments.
Issue Worklogs
Because it is not Because it is not known in advance how many subtasks worklogs exist for an issue, you can iterate a section over all the subtasks worklogs of an issue. This allows allow you to create a table that dynamically grows according to the number of existing subtasksworklogs. The notation is:
Subtasks Worklogs Fields | Description |
---|---|
Key Author | The keyauthor of the subtasksworklog |
Summary AuthorFullName | The summaryfull name of the author of the subtasksworklog |
AssigneeUserDisplayName Comment | The assignee usercomment of the subtasksworklog |
Created | The date the worklog was created |
Date Started | The date the worklog was started |
Time Spent | The time spent in seconds |
TimeSpentFormatted | The time spent as displayed on Jira |
BilledHours | The billed hours in seconds (Belongs to Tempo Timesheets plugin) |
BilledHoursFormatted | The billed hours as displayed on Jira (Belongs to Tempo Timesheets plugin) |
Code Block | ||||
---|---|---|---|---|
| ||||
Code Block | ||||
| ||||
#{for subtasksworklogs} ${SubtasksWorklogs[n].KeyAuthor} ${SubtasksWorklogs[n].SummaryAuthorFullName} ${SubtasksWorklogs[n].AssigneeUserDisplayName} #{end} or #{for <VariableName>=SubtasksCount} Content and Issue Mappings. Example: ${Subtasks[VariableName].Field} #{end} |
The image below demonstrates an example of a Word template that iterates over issue subtasks.
or
The image below demonstrates an example of an Excel template that iterates over issue subtasks.
or
For an example of how to iterate the details of a subtask Parent issue, please check the Iterating JQL Queries area below.
Issue Components
Because it is not known in advance how many components exist for an issue, you can iterate a section over all the components of an issue. This allows you to create a table that dynamically grows according to the number of existing components. The notation is:
...
Code Block | ||||
---|---|---|---|---|
| ||||
#{for components} ${Components[n].Name}Comment} ${dateformat("dd-MM-yyyy HH:mm:ss"):Worklogs[n].Created} ${dateformat("dd-MM-yyyy HH:mm:ss"):Worklogs[n].Date Started} ${ComponentsWorklogs[n].DescriptionTime Spent} ${fullname:ComponentsWorklogs[n].LeadTimeSpentFormatted} #{end} or ${Components[n].Id} ${Components[n].ProjectId} ${Components[n].AssigneeType #{for <VariableName>=WorklogsCount} Content and Worklog Mappings. Example: ${Worklogs[VariableName].Field} #{end} |
The image below demonstrates an example of a Word template that iterates over issue components.
The image below demonstrates an example of an Excel template that iterates over issue components.
...
Issue Sub-Tasks
Because it is not known in advance how many Status Transitions subtasks exist for an issue, you can iterate a section over all the Status Transitions subtasks of an issue. This allows you to create a table that dynamically grows according to the number of existing status transitionssubtasks. The notation is:
Status Transitions Subtasks Fields | Description | ||
---|---|---|---|
AuthorKey | The author key of the status transitionsubtasks | ||
CreatedSummary | The date the status transition was performed | OldStatus | The old status summary of the status transitionsubtasks |
NewStatusAssigneeUserDisplayName | The new status assignee user of the status transitionsubtasks |
Code Block | ||||
---|---|---|---|---|
| ||||
#{for statusTransitionssubtasks} ${StatusTransitionsSubtasks[n].AuthorKey} ${dateformat("dd-MM-yyyy HH:mm:ss"):StatusTransitionsSubtasks[n].Created} ${StatusTransitions[n].OldStatusSummary} ${StatusTransitionsSubtasks[n].NewStatusAssigneeUserDisplayName} #{end} or #{for <VariableName>=StatusTransitionsCountSubtasksCount} Content and StatusTransitionsIssue Mappings. Example: ${StatusTransitionsSubtasks[VariableName].Field} #{end} |
The image The documents below demonstrates an demonstrate an example of a Word template that iterates over status transitionsissue subtasks.
or
The image below demonstrates an example of an Excel template that iterates over status transitions.
or
...
For an example of how to iterate the details of a subtask Parent issue, please check the Iterating JQL Queries area below.
Issue Components
Because it is not known in advance how many Images can components exist for an issue (as an attachment), you can iterate a section over all the attached images components of an issue to get some metadata about them. This allows you to create a table that dynamically grows according to the number of existing imagescomponents. The notation is:
Attachments Images Components Fields | Description | ID | The ID of the attached image|
---|---|---|---|
Image | The image of the attached image | ||
Name | The name of the attached imagecomponent | ||
SizeDescription | The size description of the attached imagecomponent | ||
HumanReadableSizeLead | The size name of the attached imagecomponent lead | ||
AuthorId | The author of the attached image | ||
Created | The date the attached image was created | ||
MimeType | The type of the attached image | ||
ID of the component | |||
ProjectId | The project ID of the component | ||
AssigneeType | The assignee type of the component | ThumbnailURL | The URL to the thumbnail of the image
Code Block | ||||
---|---|---|---|---|
| ||||
#{for components#{for images} ${Images[n].Image|maxwidth=150|maxheight=150} ${Images[n].Name} ${Images[n].ID} ${Images[n].Size} ${ImagesComponents[n].HumanReadableSizeName} ${ImagesComponents[n].AuthorDescription} ${dateformat("dd-MM-yyyy HH:mm:ss"):Imagesfullname:Components[n].CreatedLead} ${ImagesComponents[n].MimeTypeId} ${ImagesComponents[n].ThumbnailURL} #{end} or #{for <VariableName>=ImagesCount} Content and Images Mappings. Example:ProjectId} ${ImagesComponents[VariableNamen].FieldAssigneeType} #{end} |
The image below demonstrates an example of a Word template that iterates over attached images.
or
...
The documents below demonstrate an example of a template that iterates over issue components.
Iterating_Issue_Components.docx
Iterating_Issue_Components.xlsx
Issue Status Transitions
Because it is not known in advance how many Status Transitions exist for an issue, you can iterate a section over all the Status Transitions of an issue. This allows you to create a table that dynamically grows according to the number of existing status transitions. The notation is:
Status Transitions Fields | Description |
---|---|
Author | The author of the status transition |
Created | The date the status transition was performed |
OldStatus | The old status of the status transition |
NewStatus | The new status of the status transition |
...
Code Block | |||||
---|---|---|---|---|---|
| |||||
#{for statusTransitions} ${StatusTransitions[n].Author} ${dateformat("dd-MM-yyyy HH:mm:ss"):StatusTransitions[n].Created} ${StatusTransitions[n].OldStatus#{for images} ${ImagesStatusTransitions[n].Image|width=150|height=150NewStatus} #{end} |
These values are in pixels and if you only define one of them the image will be rescaled.
Info |
---|
Note that, if you use both maxWidth and width mappings, only the max value will be read. The same behavior happens with height and maxHeight. |
The image below demonstrates an example of an Excel template that iterates over attached images.
or
...
#{end}
or
#{for <VariableName>=StatusTransitionsCount}
Content and StatusTransitions Mappings. Example: ${StatusTransitions[VariableName].Field}
#{end} |
The documents below demonstrate an example of a template that iterates over status transitions.
Issue Attached Images
Because it is not known in advance how many attachments Images can exist in for an issue (as an attachment), you can iterate a section over all the attachments of attached images of an issue to get some metadata about them. This allows you to create a table that dynamically grows according to the number of existing attachmentsimages. The notation is:
Attachments Images Fields | Description | ||
---|---|---|---|
ID | The ID of the attached image | ||
Image | The image of the attachmentattached image | ||
Name | The name of the attachmentattached image | ||
AuthorSize | The author size of the attachmentattached image | ||
AuthorFullNameHumanReadableSize | The full name size of the attached image | ||
Author | The author of the attachmentattached image | ||
Created | The date the attachment attached image was created | ||
SizeMimeType | The size type of the attachment | ||
HumanReadableSize | The formatted size of the attachment | ||
attached image | |||
ThumbnailURL | The URL to the thumbnail of the image | MimeType | The type of the attachment
Code Block | ||||
---|---|---|---|---|
| ||||
#{for attachments images} ${Images[n].Image|maxwidth=150|maxheight=150} ${Images[n].Name} ${AttachmentsImages[n].ID} ${AttachmentsImages[n].NameSize} ${AttachmentsImages[n].AuthorHumanReadableSize} ${AttachmentsImages[n].AuthorFullNameAuthor} ${dateformat("dd-MM-yyyy HH:mm:ss"):AttachmentsImages[n].Created} ${AttachmentsImages[n].SizeMimeType} ${Attachments[n].HumanReadableSize} ${AttachmentsImages[n].MimeTypeThumbnailURL} # #{end} or #{for <VariableName>=AttachmentsCountImagesCount} Content and IssueImages Mappings. Example: ${AttachmentsImages[VariableName].Field} #{end} |
The image below demonstrates an example of a Word template that iterates over
...
attached images.
...
or
The image below demonstrates an example of an Excel template that iterates over attachments.
...
Info |
---|
Doc. Generator will automatically read the EXIF orientation property of an image and rotate it to its correct orientation. You can turn this off by adding this property to your template. |
Code Block | ||||
---|---|---|---|---|
| ||||
#{for images}
${Images[n].Image|width=150|height=150}
#{end} |
These values are in pixels and if you only define one of them the image will be rescaled.
Info |
---|
Note that, if you use both maxWidth and width mappings, only the max value will be read. The same behavior happens with height and maxHeight. |
The documents below demonstrate an
or
Issue Labels
Because it is not known in advance how many labels exist in an issue, you can iterate a section over all the labels of an issue. The notation is:
...
Code Block |
---|
#{for labels}
${Labels[n].Name}
#{end}
or
#{for <VariableName>=LabelsCount}
${Labels[VariableName].Name}
#{end} |
The image below demonstrates an example of a Word template that iterates over labels.
or
The image below demonstrates an example of an Excel template that iterates over labelsattached images.
or
Issue Activity
...
Issue Attachments
Because it is not known in advance how many
...
attachments exist in an issue, you can iterate a section over all the
...
attachments of an issue. This allows you to create a table that dynamically grows according to the number of existing
...
attachments. The notation is:
Attachments Fields | Description |
---|
The title of the issue
ID | The |
ID of the |
attachment |
Name | The name of the attachment |
Author | The author of the |
attachment |
AuthorFullName | The |
full name of the author |
of the |
attachment |
Created | The |
date the |
attachment was created | |
Size | The size of the attachment |
HumanReadableSize | The formatted size of the attachment |
MimeType | The type of the attachment |
Code Block | ||||
---|---|---|---|---|
| ||||
#{for activityEntries attachments} ${Attachments[n].ID} ${Attachments[n].Name} ${Attachments[n].Author} ${Attachments[n].AuthorFullName} ${ActivityEntries${dateformat("dd-MM-yyyy HH:mm:ss"):Attachments[n].TitleCreated} ${ActivityEntriesAttachments[n].SummarySize} ${ActivityEntriesAttachments[n].ContentHumanReadableSize} ${ActivityEntriesAttachments[n].AuthorMimeType} #{end} or #{for <VariableName>=AttachmentsCount} ${ActivityEntries[n].AuthorEmail} ${dateformat("dd-MM-yyyy HH:mm:ss"):ActivityEntries[n].Published} ${dateformat("dd-MM-yyyy HH:mm:ss"):ActivityEntries[n].Updated} ${ActivityEntries[n].Categories} #{end} or #{for <VariableName>=ActivityEntriesCount} Content and Issue Mappings. Example: ${ActivityEntries[VariableName].Field} #{end} |
Info |
---|
We suggest that you use the html function to render the data because almost all content is HTML, e.g., ${html:ActivityEntries[n].Title} |
Below is an example of using the Activity iteration in a Word template:
or
Below is an example of using the Activity iteration in an Excel template:
or
...
Content and Issue Mappings. Example: ${Attachments[VariableName].Field}
#{end} |
The documents below demonstrate an example of a template that iterates over attachments.
Iterating_Issue_Attachments.xlsx
Issue Labels
Because it is not known in advance how many labels exist in an issue, you can iterate a section over all the labels of an issue. The notation is:
Attachments Fields | Description |
---|---|
Name | The name of the label |
Code Block |
---|
#{for labels}
${Labels[n].Name}
#{end}
or
#{for <VariableName>=LabelsCount}
${Labels[VariableName].Name}
#{end} |
The documents below demonstrate an example of a template that iterates over labels.
Project Versions
You can iterate over all project versions to which the issue belong to. The notation is:
...
Code Block |
---|
#{for projectVersions} ${ProjectVersions[n].Name} ${ProjectVersions[n].Description} ${dateformat("dd-MM-yyyy"):ProjectVersions[n].Start date} ${dateformat("dd-MM-yyyy"):ProjectVersions[n].Release date} #{end} or #{for <VariableName>=ProjectVersionsCount} ${ProjectVersions[VariableName].Name} ${ProjectVersions[VariableName].Description} ${dateformat("dd-MM-yyyy"):ProjectVersions[VariableName].Start date} ${dateformat("dd-MM-yyyy"):ProjectVersions[VariableName].Release date} #{end} |
The image The documents below demonstrates an demonstrate an example of a Word template that iterates over project version.
or
The image below demonstrates an example of an Excel template that iterates over project version.
or
Iterating_Issue_ProjectVersions.docx
Iterating_Issue_ProjectVersions.xlsx
Iterating JQL Queries
You can iterate issues that are the result of a JQL Query. The syntax is similar to the other iterations, but there is a clause parameter that will receive the JQL Query. A few examples are provided below.
Code Block | ||||
---|---|---|---|---|
| ||||
a simple example iterating the details of issues from a specified Project: #{for i=JQLIssuesCount|clause=project = DEMO} ${JQLIssues[i].Key} ${JQLIssues[i].Summary} #{end} or a more advanced example iterating the details of issues linked with the current Issue: #{for m=JQLIssuesCount|clause=issuekey in linkedIssues (${Links[j].Key})} Linked Issue ${JQLIssues[m].Summary} has ${JQLIssues[m].LinksCount} links #{end} or an also advanced example iterating the details of the Parent issue from the current Subtask: #{for i=JQLIssuesCount|clause=issuekey = ${ParentIssueKey}} ${JQLIssues[i].Key} ${JQLIssues[i].Id} ${JQLIssues[i].Description} #{end} |
The image The documents below demonstrates an demonstrate an example of a Word template that iterates over issue subtasks.
The image below demonstrates an example of an Excel template that iterates over issue subtasks.
Info |
---|
You can also use a Filter Name or a Filter Id as a clause. For more info, read this. |
...
Links Bugs with High Priority:
Nested Iterations:
Iterating in the same line of the document
...