Hi Guys,
How can i convert script console result into table. Kindly suggest
@Ram Kumar Aravindakshan _Adaptavist_
Result :- "$project.key, $project.name, $project.leadUserKey, ${actors.getUsers()*.emailAddress}\n"
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.security.roles.ProjectRole
import com.atlassian.jira.security.roles.ProjectRoleActors
import com.atlassian.jira.security.roles.ProjectRoleManager
final String projectRoleName = 'Administrators'
final List<String> projectKeys = ["IAM",
"MWC",
"SPFLALL",
"DWC",
"MHV",
"ODM",
"DGE",
"MWOK",
"EISRT",
"DPB",
"CGIFCANC",
"BL",
"TAA",
"ALI",
"SGHBBAALL",
"WP",
"RTG",
"UKWABC",
"IGE",
"CM",
"NDMA",
"NKSMA",
"CTIILS",
"SGHBBAIIMLE",
"CI",
"MYHBBIALL",
"PHHBBIALL",
"HKHBBIALL",
"CNHBBIALL",
"SGHBBIALL",
"UCWP",
"WI",
"KD",
"HDS",
"CTC",
"DV",
"MECST",
"JTN",
"JTNF",
"ETVP",
"CTBM",
"QD",
"HBBFR",
"MLSIR",
"GOSTX",
"LD",
"CD",
"MAB",
"OVI",
"SIEM",
"SDP",
]
ProjectManager projectManager = ComponentAccessor.getProjectManager()
ProjectRoleManager projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
ProjectRole projectRole = projectRoleManager.getProjectRole(projectRoleName)
String result
projectKeys.each{ String projectKey ->
Project project = projectManager.getProjectObjByKey(projectKey)
if (project) {
ProjectRoleActors actors = projectRoleManager.getProjectRoleActors(projectRole, project)
result += "$project.key, $project.name, $project.leadUserKey, ${actors.getUsers()*.emailAddress}\n"
}
}
return result
For your requirement, you could try something like this:-
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.roles.ProjectRoleManager
import groovy.xml.MarkupBuilder
def projectManager = ComponentAccessor.projectManager
def projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
final def projectRoleName = 'Administrators'
def projectRole = projectRoleManager.getProjectRole(projectRoleName)
final def projectKeys = ['MOCK', 'SAM'] as ArrayList<String>
def writer = new StringWriter()
new MarkupBuilder(writer).table(style: 'border: 1px solid black; border-collapse: collapse;') {
tbody {
tr {
td('Project Key', style: 'border: 1px solid black;')
td('Project Name', style: 'border: 1px solid black;')
td('Project Lead User Key', style: 'border: 1px solid black;')
td('Project Role Actors', style: 'border: 1px solid black;')
}
projectKeys.each {
def project = projectManager.getProjectObjByKey(it)
if (project) {
def actors = projectRoleManager.getProjectRoleActors(projectRole, project)
tr {
td("${project.key}", style: 'border: 1px solid black;')
td("${project.name}", style: 'border: 1px solid black;')
td("${project.leadUserKey}", style: 'border: 1px solid black;')
td("${actors.users*.emailAddress}", style: 'border: 1px solid black;')
}
}
}
}
}
writer.toString()
Below is a screenshot of the result:-
You will just need to modify the list of the projectKeys, i.e. from:-
final def projectKeys = ['MOCK', 'SAM'] as ArrayList<String>
to
final def projectKeys = ['IAM', 'MWC', 'SPFLALL', 'DWC', 'MHV', 'ODM', 'DGE', 'MWOK', 'EISRT', 'DPB', 'CGIFCANC',
'BL', 'TAA', 'ALI', 'SGHBBAALL', 'WP', 'RTG', 'UKWABC', 'IGE', 'CM', 'NDMA', 'NKSMA', 'CTIILS',
'SGHBBAIIMLE', 'CI', 'MYHBBIALL', 'PHHBBIALL', 'HKHBBIALL', 'CNHBBIALL', 'SGHBBIALL', 'UCWP',
'WI', 'KD', 'HDS', 'CTC', 'DV', 'MECST', 'JTN', 'JTNF', 'ETVP', 'CTBM', 'QD', 'HBBFR', 'MLSIR',
'GOSTX', 'LD', 'CD', 'MAB', 'OVI', 'SIEM', 'SDP'] as ArrayList<String>
and you should get your expected result.
I hope this helps to answer your question. :)
Thank you and Kind regards,
Ram
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes you can by returning html code as String, it will be interpret and displayed as Table.
https://www.w3schools.com/html/html_tables.asp
Regards
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
This code should do the trick, not sure how you want to display actors but it should be a good start.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.security.roles.ProjectRole
import com.atlassian.jira.security.roles.ProjectRoleActors
import com.atlassian.jira.security.roles.ProjectRoleManager
final String projectRoleName = 'Administrators'
final List<String> projectKeys = ["IAM",
"MWC",
"SPFLALL",
"DWC",
"MHV",
"ODM",
"DGE",
"MWOK",
"EISRT",
"DPB",
"CGIFCANC",
"BL",
"TAA",
"ALI",
"SGHBBAALL",
"WP",
"RTG",
"UKWABC",
"IGE",
"CM",
"NDMA",
"NKSMA",
"CTIILS",
"SGHBBAIIMLE",
"CI",
"MYHBBIALL",
"PHHBBIALL",
"HKHBBIALL",
"CNHBBIALL",
"SGHBBIALL",
"UCWP",
"WI",
"KD",
"HDS",
"CTC",
"DV",
"MECST",
"JTN",
"JTNF",
"ETVP",
"CTBM",
"QD",
"HBBFR",
"MLSIR",
"GOSTX",
"LD",
"CD",
"MAB",
"OVI",
"SIEM",
"SDP",
]
ProjectManager projectManager = ComponentAccessor.getProjectManager()
ProjectRoleManager projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
ProjectRole projectRole = projectRoleManager.getProjectRole(projectRoleName)
String result = """
<table>
<tr>
<th>Project Key</th>
<th>Project Name</th>
<th>Project Lead</th>
<th>Project Actors</th
</tr>
"""
projectKeys.each{ String projectKey ->
Project project = projectManager.getProjectObjByKey(projectKey)
if (project) {
ProjectRoleActors actors = projectRoleManager.getProjectRoleActors(projectRole, project)
result += """
<tr>
<td>${project.key}</td>
<td>${$project.name}</td>
<td>${$project.leadUserKey.getDisplayName()}</td>
<td>${actors.getUsers()*.getEmailAddress()}</td>
</tr>
"""
}
}
return result+"</table>"
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Florian Bonniec Thanks a lot for your help. Minor correction makes above script working.
<td>"${project.name}"</td>
<td>"${project.leadUserKey}"</td>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.