Skip to main content
Inspiring
February 9, 2022
Answered

Moving multiple pages via script

  • February 9, 2022
  • 2 replies
  • 1894 views

Is it possible to move mutliple pages in InDesign scripting with a single move call or do you need to move one page at a time?

Correct answer m1b

It's hard to say if it's one page at a time. The move() method belongs to Page and not Pages, so you could infer that the API moves one page at a time. But here's a simple example of moving some pages, and it is basically one call for multiple pages if you do it this way.

- Mark

var doc = app.activeDocument;
var allPages = doc.pages;
var myPages = allPages.itemByRange(4, 7);
myPages.move(LocationOptions.AT_BEGINNING);

2 replies

m1b
Community Expert
m1bCommunity ExpertCorrect answer
Community Expert
February 9, 2022

It's hard to say if it's one page at a time. The move() method belongs to Page and not Pages, so you could infer that the API moves one page at a time. But here's a simple example of moving some pages, and it is basically one call for multiple pages if you do it this way.

- Mark

var doc = app.activeDocument;
var allPages = doc.pages;
var myPages = allPages.itemByRange(4, 7);
myPages.move(LocationOptions.AT_BEGINNING);
Community Expert
February 9, 2022

Hi Mark,

Good one, I missed that. However, correct me if I am wrong this will always move a contigous set of pages to a common destination, it won't cater to use cases of moving say single pages to different locations.

-Manan

-Manan
Known Participant
May 16, 2025

I don't know what Mark has up his sleeve, but I have this little snippet of code that I modified, years ago, based off an ancient Marijan Tompa post. I might be able to modify it to suit your purposes, as I wrote (er, stole) it at a time where I really didn't have the skill to modify it easily. The way it's currently set up is that it copies all of the pages from the active document into the next open document, after the last page. It doesn't move the pages, it duplicates them, so it's more of a "copy pages" script than a "move pages" script. If that doesn't work for you, I think all you'd have to do is change ".duplicate" to ".move". 

var pageSource = app.documents[0]; 
pageSource.pages.everyItem().duplicate(LocationOptions.AFTER, app.documents[1].pages.item(-1));

 


Hi Joel,

The key is it has to maintain the text threads or it is of no use, unfortunately. It seems other scripters have struggled with this. The existing command  "Move Pages" to another document has no impact on the source file if you uncheck Delete pages, but that doesn't really matter, since I would just close the source file without saving. 
If you think just changing to Move would work with the existing parameters, I'm happy to try it, but Move is a different command and may have different variables.

Community Expert
February 9, 2022