Skip to main content
Participant
May 5, 2022
Question

script for removing empty text frames

  • May 5, 2022
  • 3 replies
  • 1983 views

hi

i have a document that is well over 400 pages and everytime i delete a page; some empty frames appear in the middle of the page.

 

instead of removing them one by one, ive tried a couple of scripts ive found via google, however they are working too well and removing everything- including coloured frames that i need.

 

i have no clue how to write scripts so if someone could give me one that would be amazing.

 

thankyou in advance!

This topic has been closed for replies.

3 replies

Robert at ID-Tasker
Legend
October 22, 2024

@con1499

 

If you work on a PC, you could use my ID-Tasker tool. It's not free, but you can create a Task, that will get a list of objects with properties you need - kind of "preflight" - and then you can have another Task that will remove those objects. 

Two separate Tasks, just in case, so you can be sure that you won't remove something important - you can visually inspect pre-selected objects for deletion.  

 

The main advantage of my tool - you don't have to ask anyone to update initial script - you can modify Task(s) at any time, any way you want. 

 

Free version can still be helpful - you can still get list of objects, do this preflight, but you won't be able to remove them in bulk automatically. 

 

And you can do a lot more than this - ID-Tasker can replicate pretty much every mundane click that you can make manually - and not only in InDesign. 

 

Inspiring
October 22, 2024
Community Expert
May 5, 2022

Hi @con1499,

What is your definition of an empty frame? And by frame do you mean textframes or retangles, ovals as well?

-Manna

-Manan
con1499Author
Participant
May 5, 2022

see attached image. the frames in the middle of the page is what needs removing.

the other scripts were also removing the red rectangle frames as well as the grey backgrounds.

Community Expert
May 5, 2022

Try the following code

var pis = app.documents[0].pageItems.everyItem().getElements()
for(var i = 0; i <pis.length; i++){
	var pi = pis[i]
	if(pi.hasOwnProperty("contents"))
	{	if(pi.contents == "" && pi.fillColor.name == "None")
			pi.remove()
	}
	else if(pi.pageItems.length == 0 && pi.fillColor.name == "None")
		pi.remove()
}

-Manan

-Manan