Remove list of pages using groovy script | Community
Skip to main content
gayatrik8153299
New Participant
September 10, 2020
Solved

Remove list of pages using groovy script

  • September 10, 2020
  • 3 replies
  • 2847 views

Hi All,

We have some list of pages in an array and need to remove all those pages from the list.

Ex:

def list =["/content/we-retail/us/en/test1","/content/we-retail/be/en/test1","/content/we-retail/us/en/test2","/content/we-retail/be/en/test2"]

 

We tried with below code but it is not working.Could you please assist on this asap.

 

def buildQuery(list)
{
def queryManager = session.workspace.queryManager
def statement = 'SELECT * FROM [nt:unstructured] AS node WHERE ISDESCENDANTNODE (node, "/content/we-retail") and name()=\'' + list+ '\'';
queryManager.createQuery(statement, 'sql')
}
def list =["/content/we-retail/us/en/test1","/content/we-retail/be/en/test1","/content/we-retail/us/en/test2","/content/we-retail/be/en/test2"]
final def query = buildQuery(list)
final def result = query.execute()
if(result.nodes.size()!=0){
result.nodes.each { node ->
if(node.contains(list))
{
node.remove()
save()
println "removed:"+list
}
}
}

 

@kautuk_sahni 

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by aemmarc2

Tried, tested and true --> https://gist.github.com/stillalex/43c49af065e3dd1fd5bf

3 replies

arunpatidar
New Participant
September 13, 2020
aemmarc2Accepted solution
Employee
September 10, 2020
Andrei_Dantsou
New Participant
September 10, 2020

Hello @gayatrik8153299 ,

If your goal is to remove pages by the paths from the list, you can just iterate through the list with paths, get nodes and remove them (no querying is required):

 

def list =["/content/we-retail/us/en/test1","/content/we-retail/be/en/test1","/content/we-retail/us/en/test2","/content/we-retail/be/en/test2"] list.each { path -> def node = getNode(path); node.remove(); println "removed:"+path } session.save()

 

 

or using Resource API:

 

def list =["/content/we-retail/us/en/test1","/content/we-retail/be/en/test1","/content/we-retail/us/en/test2","/content/we-retail/be/en/test2"] list.each { path -> Resource resource = resourceResolver.getResource(path); if (resource != null) { resourceResolver.delete(resource); println "removed:"+path } } resourceResolver.commit();

 

Regards