Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
maxLevel1

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 FieldsDescription
Title

The title of the issue

SummaryThe summary of the activity
ContentWhen an activity involves a change in the Issue contents, this field displays the new contents
AuthorThe author of the activity
AuthorEmailThe email of the author of the activity
PublishedThe time the issue was published
UpdatedThe time the issue was updated
CategoriesWhen an activity regards an Issue Status change, this field displays the new Issue Status
Code Block
titleExpand to see the sample code
collapsetrue
#{for activityEntries}
   ${ActivityEntries[n].Title}
   ${ActivityEntries[n].Summary}
   ${ActivityEntries[n].Content}
   ${ActivityEntries[n].Author}
   ${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 are two examples of using the Activity iteration in a Word and Excel template:

word.pngImage Added Iterating_Activity_Entries.docx

excel.pngImage Added Iterating_Activity_Entries.xlsx

Issue History

You can iterate a section over all the history entries of an issue. This allows you to create a table that dynamically grows according to the number of changes done. 

...

Code Block
titleExpand to see the sample code
collapsetrue
#{for links}
   ${Links[n].AppType}
   ${Links[n].LinkType}
   ${Links[n].Key}
   ${Links[n].Summary}
   ${Links[n].URL}
#{end}
 
or
 
#{for <VariableName>=LinksCount}
   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.

Image Removed

or

Image Removed


#{end}


The documents below demonstrates an example of a The image below demonstrates an example of an Excel template that iterates over linked issues.

Image Removed

or

...

word.pngImage Added Iterating_Issue_Links.docx

excel.pngImage Added Iterating_Issue_Links.xlsx

Issue Comments

Because it is not known in advance how many comments exist for an issue, you can iterate a section over all the comments on an issue. This allows you to create a table that dynamically grows according to the number of existing comments. The notation is:

...

Code Block
titleExpand to see the sample code
collapsetrue
#{for comments}
   ${Comments[n].Author} 
   ${Comments[n].AuthorFullName} 
   ${Comments[n].Body} 
   ${dateformat("dd-MM-yyyy HH:mm:ss"):Comments[n].Created}
   ${Comments[n].GroupLevel}
#{end}
 
or
 
#{for <VariableName>=CommentsCount}
   Content and Issue Mappings. Example: ${Comments[VariableName].Field}
#{end}


The image The documents below demonstrates demonstrate an example of a Word template that iterates over issue comments.

Image Removed

or

Image Removed

The image below demonstrates an example of an Excel template that iterates over issue comments.

Image Removed

or

word.pngImage Added Iterating_Issue_Comments.docx

excel.pngImage Added Iterating_Issue_Comments.xlsx Image Removed

Issue Worklogs

Because it is not known in advance how many worklogs exist for an issue, you can iterate a section over all the worklogs of an issue. This allow you to create a table that dynamically grows according to the number of existing worklogs. The notation is:

...

Code Block
titleExpand to see the sample code
collapsetrue
#{for subtasks}
   ${Subtasks[n].Key}
   ${Subtasks[n].Summary}
   ${Subtasks[n].AssigneeUserDisplayName}
#{end}
 
or
 
#{for <VariableName>=SubtasksCount}
   Content and Issue Mappings. Example: ${Subtasks[VariableName].Field}
#{end}

The image The documents below demonstrates an demonstrate an example of a Word template that iterates over issue subtasks.

Image Removed

or

Image Removed

The image below demonstrates an example of an Excel template that iterates over issue subtasks.

Image Removed

or

Image Removed

word.pngImage Added Iterating_Issue_Subtasks.docx

excel.pngImage Added Iterating_Issue_Subtasks.xlsx

For an example of how to iterate the details of a subtask Parent issue, please check the Iterating JQL Queries area below.

...

Code Block
titleExpand to see the sample code
collapsetrue
#{for components}
   ${Components[n].Name}
   ${Components[n].Description}
   ${fullname:Components[n].Lead}
   ${Components[n].Id}
   ${Components[n].ProjectId}
   ${Components[n].AssigneeType}
#{end}

 The image below demonstrates an example of a Word template that iterates over issue components.

Image Removed

 The image below demonstrates  The documents below demonstrate an example of an Excel a template that iterates over issue components.

word.pngImage Added Iterating_Issue_Components.docx

excel.pngImage Added Iterating_Issue_Components.xlsxImage Removed

 

Issue Status Transitions

...

Code Block
titleExpand to see the sample code
collapsetrue
#{for statusTransitions}
   ${StatusTransitions[n].Author}
   ${dateformat("dd-MM-yyyy HH:mm:ss"):StatusTransitions[n].Created}
   ${StatusTransitions[n].OldStatus}
   ${StatusTransitions[n].NewStatus}
#{end}
 
or
 
#{for <VariableName>=StatusTransitionsCount}
   Content and StatusTransitions Mappings. Example: ${StatusTransitions[VariableName].Field}
#{end}

The image The documents below demonstrates demonstrate an example of a Word template that iterates over status transitions.

Image Removed

or

Image Removed

The image below demonstrates an example of an Excel template that iterates over status transitions.

Image Removed

or

Image Removed

word.pngImage Added Iterating_Issue_StatusTransitions.docx

excel.pngImage Added Iterating_Issue_StatusTransitions.xlsx

Issue Attached Images

Because it is not known in advance how many Images can exist for an issue (as an attachment), you can iterate a section over all the 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 images. The notation is:

...

The image below demonstrates an example of a Word template that iterates over attached images. Image Removed 

or

Image Removedword.pngImage Added Iterating_Issue_Images.docx



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.

...

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 The documents below demonstrates an demonstrate an example of an Excel template that iterates over attached images. 

Image Removed 

or

Image Removed

excel.pngImage Added Iterating_Issue_Images.xlsx

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:

...

Code Block
titleExpand to see the sample code
collapsetrue
#{for attachments}
   ${Attachments[n].ID}
   ${Attachments[n].Name}
   ${Attachments[n].Author}
   ${Attachments[n].AuthorFullName}
   ${dateformat("dd-MM-yyyy HH:mm:ss"):Attachments[n].Created}
   ${Attachments[n].Size}
   ${Attachments[n].HumanReadableSize}
   ${Attachments[n].MimeType}
#{end}
 
or
 
#{for <VariableName>=AttachmentsCount}
   Content and Issue Mappings. Example: ${Attachments[VariableName].Field}
#{end}

The image The documents below demonstrates an demonstrate an example of a Word template that iterates over attachments.

Image Removed

or

Image Removed

The image below demonstrates an example of an Excel template that iterates over attachments.

Image Removed

or

excel.pngImage Added Iterating_Issue_Attachments.xlsxImage Removed

Issue Labels

...

Code Block
#{for labels}
   ${Labels[n].Name}
#{end}
 
or
 
#{for <VariableName>=LabelsCount}
  ${Labels[VariableName].Name}
#{end}

The image The documents below demonstrates an demonstrate an example of a Word template that iterates over labels.

Image Removed

or

Image Removed

The image below demonstrates an example of an Excel template that iterates over labels.

Image Removed

or

word.pngImage Added Iterating_Issue_Labels.docx

excel.pngImage Added Iterating_Issue_Labels.xlsxImage Removed

Project Versions

...

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.

Image Removed

or

Image Removed

The image below demonstrates an example of an Excel template that iterates over project version.

Image Removed

or

Image Removed

word.pngImage Added Iterating_Issue_ProjectVersions.docx

excel.pngImage Added 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
titleExpand to see the sample code
collapsetrue
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.

Image Removed

The image below demonstrates an example of an Excel template that iterates over issue subtasks.

excel.pngImage Added Iterating_JQLIssues.xlsxImage Removed 
 

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:Image Removed

word.pngImage Added Links_Bugs_HighPriority.docx

Nested Iterations:Image Removed

word.pngImage Added Links_Nested_Iterations.docx

Iterating in the same line of the document

...