Stand with Ukraine 🇺🇦

Show Group List — Confluence Cloud Macro

confluence-contentadmin

The macro retrieves all Confluence groups and checks each group name against a specified filter value. If matching groups are found, it displays the results in the selected output format (Table, Ordered List, or Unordered List). If no matches are found, a "No groups match the filter" message is shown. Styles are applied for better presentation, and the macro allows for flexible output based on user preferences.

Try for free

User Parameters

Filter value

Select a filter to search for groups

Output type parameter

Desc

Template

## Get the filter value and output type from the parameters
#set($filterValue = $parameters.filterValue)
#set($outputType = $parameters.outputType)

## Fetch all groups from the Confluence REST API
#set($groups = $ConfluenceManager.get("/wiki/rest/api/group"))

## Table styling class for AUI
#set($tableClass = "aui aui-table-sortable aui-table-interactive aui-table-rowhover")

## Initialize a flag to check if there are any matching groups
#set($foundGroup = false)

## Loop through each group and check if the group name contains the filter value
#foreach($group in $groups.results)
#if ($StringUtils.contains($group.name, $filterValue))
#set($foundGroup = true)
#break ## Exit the loop early if a match is found
#end
#end

## Render the output based on the specified output type
#if ($outputType == "Table")
<table class="$tableClass" style="width: fit-content; padding: 3px;">
    #if ($foundGroup)
    <thead>
        <tr>
            <th>Groups that match the filter: $filterValue</th>
        </tr>
    </thead>
    #end
    <tbody>
        #if ($foundGroup)
        #foreach($group in $groups.results)
        #if ($StringUtils.contains($group.name, $filterValue))
        <tr>
            <td>$group.name</td>
        </tr>
        #end
        #end
        #else
        <tr>
            <td colspan="1">No groups match the filter: <strong>$filterValue</strong></td>
        </tr>
        #end
    </tbody>
</table>
#end

#if ($outputType == "Ordered list")
#if ($foundGroup)
<p style="padding: 3px;">
    Groups that match the filter: <strong>$filterValue</strong>
</p>
<ol style="width: fit-content;">
    #foreach($group in $groups.results)
    #if ($StringUtils.contains($group.name, $filterValue))
    <li style="border-bottom: 1px solid #DFE1E6; padding: 3px;">$group.name</li>
    #end
    #end
</ol>
#else
No groups match the filter: <strong>$filterValue</strong>
#end
#end

#if ($outputType == "Unordered list")
#if ($foundGroup)
<p style="padding: 3px;">
    Groups that match the filter: <strong>$filterValue</strong>
</p>
<ul style="width: fit-content;">
    #foreach($group in $groups.results)
    #if ($StringUtils.contains($group.name, $filterValue))
    <li style="border-bottom: 1px solid #DFE1E6; list-style-type: circle; padding: 3px;">$group.name</li>
    #end
    #end
</ul>
#else
No groups match the filter: <strong>$filterValue</strong>
#end
#end