Expand my Community achievements bar.

SOLVED

Remove list of pages using groovy script

Avatar

Level 2

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 

1 Accepted Solution

Avatar

Correct answer by
Employee
3 Replies

Avatar

Level 4

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

Avatar

Correct answer by
Employee