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

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
Community showcase
Published Tuesday in Confluence

Confluence Admin Certification now $150 for Community Members

More and more people are building their careers with Atlassian, and we want you to be at the front of this wave! Important Dates Start the Certification Prep Course by 2 April 2019 Take your e...

208 views 2 10
Read article

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