Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Script Console result into table

Vikrant Yadav
Community Champion
July 28, 2022

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

2 answers

2 accepted

1 vote
Answer accepted
Ram Kumar Aravindakshan _Adaptavist_
Community Champion
July 28, 2022

Hi @Vikrant Yadav

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

console_test.png

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

Vikrant Yadav
Community Champion
July 28, 2022

Thanks a lot @Ram Kumar Aravindakshan _Adaptavist_  as always for helping me. 

1 vote
Answer accepted
Florian Bonniec
Community Champion
July 28, 2022

Hi @Vikrant Yadav 

 

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

Florian Bonniec
Community Champion
July 28, 2022

@Vikrant Yadav 

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>"
Like Vikrant Yadav likes this
Vikrant Yadav
Community Champion
July 28, 2022

@Florian Bonniec  Thanks a lot for your help. Minor correction makes above script working.

 

<td>"${project.name}"</td> 

<td>"${project.leadUserKey}"</td>

Suggest an answer

Log in or Sign up to answer