Page History
...
Code Block | ||||
---|---|---|---|---|
| ||||
#{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 The documents below demonstrates an 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
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 | ||||
---|---|---|---|---|
| ||||
#{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.
or
The image below demonstrates an example of an Excel template that iterates over issue comments.
or
Issue Worklogs
Issue Worklogs
Because 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 | ||||
---|---|---|---|---|
| ||||
#{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.
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.
...
Code Block | ||||
---|---|---|---|---|
| ||||
#{for components} ${Components[n].Name} ${Components[n].Description} ${fullname:Components[n].Lead} ${Components[n].Id} ${Components[n].ProjectId} ${Components[n].AssigneeType} #{end} |
The image The documents below demonstrates demonstrate 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.
Iterating_Issue_Components.docx
Iterating_Issue_Components.xlsx
Issue Status Transitions
...
Code Block | ||||
---|---|---|---|---|
| ||||
#{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.
or
The image below demonstrates an example of an Excel template that iterates over status transitions.
or
Issue Attached Images
...
The image below demonstrates an example of a Word template that iterates over attached images.
or
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.
or
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 | ||||
---|---|---|---|---|
| ||||
#{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.
or
The image below demonstrates an example of an Excel template that iterates over attachments.
or
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:
...
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.
or
The image below demonstrates an example of an Excel template that iterates over labels.
or
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.
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
...