List all pages in a space showing page IDs as well as titles?

Does anyone know if a way to list all pages within a confluence space, but with Page IDs as well as page titles? Either via a plugin or something more complex such as a sql report? I know how to get individual page IDs but this is not what I am looking for. I want to generate a list of all pages showing the page ID as well as page title. Running confluence server 5.8.x

thanks

2 answers

2 votes
Stephen Deutsch Community Champion Sep 21, 2015

Hi Helen,

Here's a user macro that not only outputs all pages, but also does it in a tree so that you can see the relationships between the pages:

## @param SpaceKey:title=Space Key|type=string
#set ( $spaceToDisplay = "" )
#set ( $spaceToDisplay = $spaceManager.getSpace($paramSpaceKey) )
#if ( !$paramSpaceKey )
  #set ( $spaceToDisplay = $space )
#end
#if ( $spaceToDisplay == "" )
  <p> Space with key "$paramSpaceKey" not found. </p>
#else
  <p> Pages in space $spaceToDisplay.key </p>
  #set ( $topLevelPages = $pageManager.getTopLevelPages($spaceToDisplay) )
  <div>
    <ul>
       #foreach ( $topLevelPage in $topLevelPages )
       <li>
         <a href="${req.contextPath}$topLevelPage.urlPath"> $topLevelPage.title </a> - $topLevelPage.id
       </li>
       #parseChildren($topLevelPage)
       #end
    </ul>
  </div>
#end
#macro(parseChildren $pageToParse)
  #set ( $pageChildren = $pageToParse.getChildren() )
  #if ( $pageChildren != "[]" )
    <ul>
    #foreach($childPage in $pageChildren)
      <li>
        <a href="${req.contextPath}$childPage.urlPath"> $childPage.title </a> - $childPage.id
      </li>  
      #parseChildren($childPage)
    #end
    </ul>
  #end
#end

If you put it on a page and don't choose any space key, it will do the current space.  If you choose a space key, then it will search the space with that space key smile

You can use the Bob Swift Confluence Command Line Interface (CLI) add-on with this command to create CSV output with that information:

--action getPageList --space "yourspacekey" --outputFormat=2

You can also use the Bob Swift SQL for Confluence add-on (which comes in both Express and Pro editions) using a query like this (written using MySQL):

SELECT C.title, C.contentid, CONCAT('[',C.title, '|http://yourwiki.com/pages/editpage.action?pageId=',C.contentid,']') AS ViewURL
FROM CONTENT C
INNER JOIN SPACES S ON S.spaceid = C.spaceid
WHERE S.spacekey = 'general' AND C.content_status = 'current' AND C.contenttype = 'PAGE'
ORDER BY C.title

Note that the SQL add-on has the ability to automatically render its output in a table. If you want to render CLI output in a table, you will need the Bob Swift Advanced Tables for Confuence add-on.

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Posted Jul 10, 2018 in Confluence

We want to see the templates you've created in Confluence!

Hi Community, Jessica here from the Confluence Product Marketing team!  July’s community challenge is all about sharing pictures  — and as an extension of our first post on what ...

866 views 23 12
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you