How to get list of the used macros?
Asked by Tony Montana:

Hi peoples! Please, tell me analogue these plugins for Confluence 4 and above

<https://marketplace.atlassian.com/plugins/com.comalatech.macrostats>

<https://marketplace.atlassian.com/plugins/com.atlassian.confluence.plugins.macro-usage>  

<br />

This method <https://answers.atlassian.com/questions/155280> doesn't work


Answers:
author: Davin Studer
body: Here is a user macro that I have created for this. Just put it on a page and it should give you a report of all of the macros and user macros that are being used in your instance. This requires at least Confluence 5.5 as the MacroBrowserManager.getMacroSummaries() method was added in 5.5.

```
## Developed by: Davin Studer## Date created: 12/17/2014## @noparams  #set($containerManagerClass = $content.class.forName('com.atlassian.spring.container.ContainerManager'))#set($getInstanceMethod = $containerManagerClass.getDeclaredMethod('getInstance',null))#set($containerManager = $getInstanceMethod.invoke(null,null))#set($containerContext = $containerManager.containerContext)#set($macroBrowserManager = $containerContext.getComponent('macroBrowserManager'))#set($allMacros = $macroBrowserManager.getMacroSummaries()) ########################################################################################### This is used for getting around velocity issues when writing jQuery.                ############################################################################################set( $d = '$' ) ########################################################################################### Populate the macro information into a string that we will use as a JS object array. ############################################################################################set ($i = 0)#set($macroObjects = "")#foreach($macro in $allMacros)  #if($i != 0)    #set($macroObjects = $macroObjects + ",")  #end  #set($macroObjects = $macroObjects + "{title:'" + $macro.getTitle().getKey().replace("'","\'") + "', name:'" + $macro.getMacroName().replace("'","\'") + "'}")#set ($i = $i + 1)#end &lt;script type="text/javascript"&gt;var queue = {    macros: [$macroObjects],    current: 0,    start: function () {        this.macros.sort(compare);        this.current = 0;        this.next();    },    next: function () {        if (this.current &gt;= this.macros.length) {            AJS.$('#queryStatus span').removeClass('aui-lozenge-current');            AJS.$('#queryStatus span').addClass('aui-lozenge-success');            AJS.$('#queryStatus span').text('Report Complete');            AJS.tablessortable.setTableSortable(AJS.$('#macroUsageReport table'));            return null;        }        else {            this.current += 1;            lookupMacro(this.macros[this.current - 1]);        }    }}; function lookupMacro(macro) {    var html = '';    var searchURL = '';         AJS.$('#queryStatus span').text('Getting counts for macro: ' + macro.title);         searchURL = '/rest/searchv3/1.0/search?where=conf_all&amp;spaceSearch=true&amp;queryString=macroName:' + encodeURIComponent(macro.name);    AJS.${d}.ajax(        {            type: 'GET',            url: searchURL,            dataType: "json",            success: function(data) {                if(data.total &gt; 0) {                    html = '&lt;tr&gt;';                    html += '   &lt;td class="confluenceTd"&gt;' + macro.title + '&lt;/td&gt;';                    html += '   &lt;td class="confluenceTd"&gt;' + macro.name + '&lt;/td&gt;';                    html += '   &lt;td class="confluenceTd"&gt;' + data.total + '&lt;/td&gt;';                    html += '   &lt;td class="confluenceTd"&gt;&lt;a href="/dosearchsite.action?where=conf_all&amp;spaceSearch=true&amp;queryString=macroName:' + encodeURIComponent(macro.name) + '" target="_blank"&gt;macro usage&lt;/a&gt;&lt;/td&gt;';                    html += '&lt;/tr&gt;';                }                AJS.$('#macroUsageReport table tbody').append(html);                                 queue.next();            },            error: function (x, y, z) {                AJS.$('#queryStatus span').removeClass('aui-lozenge-current');                AJS.$('#queryStatus span').addClass('aui-lozenge-error');                AJS.$('#queryStatus span').text('Error getting counts for macro:' + macro.title);            }        }    );} function compare(a, b) {    if (a.title &lt; b.title) {        return -1;    }    if (a.title &gt; b.title) {        return 1;    }    return 0;} AJS.toInit(function(){    queue.start();   });&lt;/script&gt; &lt;div id="queryStatus"&gt;    &lt;span class="status-macro aui-lozenge aui-lozenge-current"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="macroUsageReport"&gt;    &lt;table class="confluenceTable"&gt;        &lt;thead&gt;            &lt;tr&gt;                &lt;th&gt;Macro Title&lt;/th&gt;                &lt;th&gt;Macro Name&lt;/th&gt;                &lt;th&gt;Times Used&lt;/th&gt;                &lt;th&gt;Pages Used On&lt;/th&gt;            &lt;/tr&gt;        &lt;/thead&gt;        &lt;tbody&gt;        &lt;/tbody&gt;    &lt;/table&gt;&lt;/div&gt;
```

comments: author: Tony Montana
body: Just on page or need use plugin? If ust on page - does not work this method.


author: Davin Studer
body: Correct, pasting the above code on a page won't do anything. You need to create a user macro from the above code. You can create user macros in Confluence Admin --\> User Macros. One you have created the user macro. Then on a confluence page you would simply add the macro to the page.


author: Norbert Janssens
body: Hi Viktar,

did you check that plugin: <https://marketplace.atlassian.com/plugins/com.atlassian.confluence.plugins.confluence-macro-indexer-plugin> ? It should work for Confluence 4.0 - 4.3.7.

Regards,  
Norbert


author: Tony Montana
body: And in SQL table query


author: Tony Montana
body: We use PocketQuery plugin for SQL query


Tags: confluence-administration

list

macro