Example scripts
To homepage
Jira

Remove Unused Screens
App in script

ScriptRunner For Jira
by Adaptavist
Compatibility

Jira (8.0 - 8.19)

ScriptRunner For Jira (7.10.0)
Language |
groovy
import com.atlassian.webresource.api.assembler.PageBuilderService
import com.atlassian.jira.bc.issue.fields.screen.FieldScreenService
import com.atlassian.jira.issue.fields.screen.FieldScreenFactory
import com.atlassian.jira.web.action.admin.issuefields.screens.ViewFieldScreens
import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.scriptrunner.canned.util.OutputFormatter
def fieldScreenManager = ComponentAccessor.getFieldScreenManager()
def fieldScreenFactory = ComponentAccessor.getComponent(FieldScreenFactory)
def fieldScreenSchemeManager = ComponentAccessor.getFieldScreenSchemeManager()
def fieldScreenService = ComponentAccessor.getComponent(FieldScreenService)
def workflowManager = ComponentAccessor.getWorkflowManager()
def jiraAuthenticationContext = ComponentAccessor.getJiraAuthenticationContext()
def pageBuilderService = ComponentAccessor.getComponent(PageBuilderService)
def deletedScreens = []
def errorScreens = [:]
def viewFieldScreens = new ViewFieldScreens(fieldScreenManager,
fieldScreenFactory,
fieldScreenSchemeManager,
fieldScreenService,
workflowManager,
jiraAuthenticationContext,
pageBuilderService)
fieldScreenManager.getFieldScreens().each { fieldScreen ->
try {
def screenSchemesIsEmpty = viewFieldScreens.getFieldScreenSchemes(fieldScreen).isEmpty()
def workflowsIsEmpty = viewFieldScreens.getWorkflows(fieldScreen).isEmpty()
if (screenSchemesIsEmpty && workflowsIsEmpty) {
fieldScreenManager.removeFieldScreen(fieldScreen.getId())
deletedScreens.add(fieldScreen.name)
}
} catch (Exception e) {
errorScreens.put(fieldScreen.name, e.getMessage())
}
}
OutputFormatter.markupBuilder {
h2('Screens Report')
!deletedScreens && !errorScreens && p('No unused screens found')
if (deletedScreens) {
h3('Deleted Screens:')
ul {
deletedScreens.each {
li(it)
}
}
}
if (errorScreens) {
h3('Errors:')
table(class: 'aui') {
thead {
tr {
th('Screen Name')
th('Error')
}
}
tbody {
errorScreens.each { screen, error ->
tr {
td(screen)
td(error)
}
}
}
}
}
}
Having an issue with this script?
Report it here