Just a heads up: On March 24, 2025, starting at 4:30pm CDT / 19:30 UTC, the site will be undergoing scheduled maintenance for a few hours. During this time, the site might be unavailable for a short while. Thanks for your patience.

×
Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Does "Scriptrunner for Confluence" allow moving multiple pages using a label?

Jason M.
Contributor
September 23, 2019

I've seen plenty of questions on this and almost every answer is "click and drag" which is not practical for hundreds of pages of varying hierarchy in a single Confluence space. There is one single unanswered question on this very topic that I could find: (https://community.atlassian.com/t5/Confluence-questions/How-to-move-multiple-pages-with-a-certain-label/qaq-p/995497)

The question is simple: Does Confluence (or Scriptrunner for Confluence) provide a method to move pages in bulk (with a certain label, e.g. "Archive") to another top-level page in the same Space? 

None of the built-in scripts in "Scriptrunner for Confluence" provide even a clue on moving multiple pages. It's all adding labels, notifications, etc. Ok, that's great, but is there seriously no way to move all these unless by "click and drag"??

I have the first portion of my script running as a Job below, I just want to move these newly labeled pages to a new top-level page. Can anyone here please provide something beyond the template "click and drag" response, or is this just where Confluence is still at since 2004

 

import com.atlassian.confluence.labels.Label
import com.atlassian.confluence.labels.LabelManager
import com.atlassian.confluence.labels.Namespace
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.scheduler.JobRunnerResponse

def labelManager = ComponentLocator.getComponent(LabelManager)
hits.each { page ->

def labelName = "Archive"

def label = labelManager.getLabel(labelName)
if (!label) {
label = labelManager.createLabel(new Label(labelName, Namespace.GLOBAL))
}

if (!page.labels*.name.contains(labelName)) {
log.info("Add label to page: ${page.title}")
labelManager.addLabel(page, label)
}
}

3 answers

1 accepted

1 vote
Answer accepted
Steven F Behnke
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 23, 2019

Import the class PageManager and then use one of the various move page methods.

https://docs.atlassian.com/atlassian-confluence/6.6.0/com/atlassian/confluence/pages/PageManager.html

0 votes
Bhupesh Nagda
Contributor
July 15, 2021

@Jason M_ 

Did it work after suggestion from Steven?

Could you please post your complete script here?

0 votes
Adis February 17, 2020

Hey Jayron32X,

Were you able to get this running?

Can you provide your script here? :D

Stephen Letch
Contributor
December 9, 2020

+1 for me on that one

Suggest an answer

Log in or Sign up to answer
TAGS
atlassian, atlassian government cloud, fedramp, webinar, register for webinar, atlassian cloud webinar, fedramp moderate offering, work faster with cloud

Unlocking the future with Atlassian Government Cloud ☁️

Atlassian Government Cloud has achieved FedRAMP Authorization at the Moderate level! Join our webinar to learn how you can accelerate mission success and move work forward faster in cloud, all while ensuring your critical data is secure.

Register Now
AUG Leaders

Upcoming Confluence Events