Forums

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

Get List of users added in a Project Role using Script Runner Console

Vikrant Yadav
Community Champion
July 26, 2021

Hi Guys,

Need your help in getting list of users added in a Project Roles using Script Runner. I want list of users added in a particular project. 

Here is code i define names = projects name for which i need users list. 

But not sure where to insert names to get list of users of these two projects only. Kindly suggest. 

 

import com.atlassian.jira.component.ComponentAccessor
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

def projectManager = ComponentAccessor.getProjectManager()
def projectRoleManager = ComponentAccessor.getComponent (ProjectRoleManager)

def sb = new StringBuffer()
//array of project names
//def names = ["AgeingWorks", "Self Service Portal"]


ProjectRole devsRole = projectRoleManager.getProjectRole("Developers")

def result = ""

projectManager.getProjectObjects().each {Project project ->
ProjectRoleActors actors = projectRoleManager.getProjectRoleActors(devsRole, project)
result += "$project.key, $project.name, $project.lead, ${actors.getUsers()*.name}\n"
}

return result

 Thanks in Advance!

1 answer

1 accepted

7 votes
Answer accepted
Hana Kučerová
Community Champion
July 26, 2021

Hi @Vikrant Yadav ,

I would do something like:

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 = 'Developers'
final List<String> projectKeys = ['ABC', 'CDE']

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()*.name}\n"
}
}
return result

ABC and CDE needs to be replaced by your projects' keys (not names!)

I changed the way the script works - if you don't need other projects, why iterate through them :-).

Vikrant Yadav
Community Champion
July 26, 2021

@Hana Kučerová  Awesome, it works for me :) . Eager to learn more from you. 

What is "ProjectRoleActors" ? 

What does it means { String projectKey ->

projectManager is used to call Project roles ?

 

Thanks a lot, Mate!

Vikrant Yadav
Community Champion
July 26, 2021

@Hana Kučerová  Instead of username , is it possible to display full name ?😜

Hana Kučerová
Community Champion
July 26, 2021

@Vikrant Yadav please try to use 

project.projectLead.displayName

instead of

project.leadUserKey

Suggest an answer

Log in or Sign up to answer