Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How I can get the list of draft pages using Script Runner for Confluence?

G2G JPSupport September 4, 2018

We write code as below to get the list of draft pages in all spaces.

import com.atlassian.confluence.pages.Page
import com.atlassian.confluence.pages.PageManager
import com.atlassian.confluence.spaces.Space
import com.atlassian.confluence.spaces.SpaceManager
import com.atlassian.sal.api.component.ComponentLocator
import org.apache.log4j.Logger
import org.apache.log4j.Level

def log = Logger.getLogger("com.acme.CreateSubtask")
log.setLevel(Level.DEBUG)

def spaceManager = ComponentLocator.getComponent(SpaceManager)
def pageManager = ComponentLocator.getComponent(PageManager)

def spaces = spaceManager.getAllSpaces()
def list = []

spaces.each{ space ->

def pages = pageManager.getPages(space, true)

log.debug 'test'
pages.each{ page ->
if (page.isDraft())

{ def type = page.getType() def date = page.getLastModificationDate() list.add([space.name, page.title, type, date]) log.debug space.name + page.title }

}
}

return list

but no items and no records in log.

Could you please help them to correct above to get list & log as expected?

Thank you in advance

2 answers

1 vote
Chihara
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 24, 2018

Found our mistake.

2nd boolean parameter of pageManger.get.Pages() means currentOnly or not. So we must use "false" to get draft pages.  As a result of this, isDraft() returns "true".

1 vote
G2G JPSupport September 12, 2018

Modify code as below,  we can get the list as expected.

import com.atlassian.confluence.pages.Page
import com.atlassian.confluence.pages.PageManager
import com.atlassian.confluence.spaces.Space
import com.atlassian.confluence.spaces.SpaceManager
import com.atlassian.sal.api.component.ComponentLocator
import org.apache.log4j.Logger
import org.apache.log4j.Level

def log = Logger.getLogger("com.acme.CreateSubtask")
log.setLevel(Level.DEBUG)

def spaceManager = ComponentLocator.getComponent(SpaceManager)
def pageManager = ComponentLocator.getComponent(PageManager)

def spaces = spaceManager.getAllSpaces()
def list = []

spaces.each{ space ->

  def pages = pageManager.getPages(space, true)

  log.debug 'test'
  pages.each{ page ->
    if(page.DRAFT=="draft"){ 
      def type = page.getType() 
      def date = page.getLastModificationDate() 
      list.add([space.name, page.title, type, date]) 
      log.debug (space.name + page.title)
    }
  }
}

return list

It seems that isDraft() does not return TRUE...
Any advice are appreciated.

Thanks,

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events