Is there some plugin that creates usage stats in Confluence 5.4.3?
Asked by Kevin Villalobos:

Hi we're currently studying the possibility to upgrade our Atlassian applications and we need to create a usage report for the installed plugins, so I found this one <https://marketplace.atlassian.com/plugins/com.comalatech.macrostats> the "[Macro usage stats plugin](https://marketplace.atlassian.com/plugins/com.comalatech.macrostats)" but it doesn't support our Confluence version, So i was wondering if you guys know an alternative plugin or know some query to extract the same infor, thanks in advance.


Answers:
author: Kevin Villalobos
body: Thank you for your help.


author: Alex Medved _ConfiForms_
body: Take a look at SpaceAuditor plugin, <https://marketplace.atlassian.com/plugins/com.vertuna.confluence.plugins.spaceauditor> (free).


author: Davin Studer
body: If you can take a backup of your prod system and create a test system and upgrade it to at least 5.5 then this user macro will work. 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;
```


Tags: activity

app

confluence-administration