Copy link to clipboard
Copied
Hello everyone!
I need a help. I need to duplicate a page X times. Does it means that I want to be able to choose how many times I want to duplicate the page.
I found an interesting script that does it but it duplicate ALL the page of the document while I need to duplicate ONLY the active page.
I have tried to modify the script but I couldn't.
Can anyone help me?
this is the script I found
var n = prompt('Enter a number between 1 and 99.', '', 'Name of dialog');
var reg = /^\d{2}$/;
if (reg.test(n)){
var doc = app.documents[0];
var nbPage = doc.pages.length; // count doc pages
for (i = 0; i < nbPage; i++) {
var sourcePage = doc.pages.item(i + (i*n));
for (j = 0; j < n; j++) {
sourcePage.duplicate(LocationOptions.AFTER, doc.pages.item(i + (i*n)));
}
}
}else{
alert('Error \r Must be a number between 1 to 99');
}
Hi,
Try following snippet for duplicating the activePage. Below script, active page will duplicate n times after active page.
var n = prompt('Enter how many times you want to duplicate', '', 'Name of dialog');
var reg = /^\d$/;
if (reg.test(n)) {
var doc = app.documents[0];
var activePage = app.layoutWindows[0].activePage
for (i = 0; i < n; i++) {
activePage.duplicate(LocationOptions.AFTER, activePage);
}
} else {
alert('Error \r Must be a number between 1 to 99');
}
Hi @GPGW , You might be better off using the built in InDesign integer dialog field rather than a text prompt, which ensures an integer is entered and returned. Also, you would have to make sure that page shuffling is allowed in order to prevent the new pages being added to a spread—the max number of pages for a spread is 10, which might be triggering the error.
Try this:
var n;
var theDialog = app.dialogs.add({name:"Enter a Number", canCancel:true});
with(theDialog.dialogColumns.add()){
Copy link to clipboard
Copied
Hi,
Try following snippet for duplicating the activePage. Below script, active page will duplicate n times after active page.
var n = prompt('Enter how many times you want to duplicate', '', 'Name of dialog');
var reg = /^\d$/;
if (reg.test(n)) {
var doc = app.documents[0];
var activePage = app.layoutWindows[0].activePage
for (i = 0; i < n; i++) {
activePage.duplicate(LocationOptions.AFTER, activePage);
}
} else {
alert('Error \r Must be a number between 1 to 99');
}
Copy link to clipboard
Copied
it works
thanks
Copy link to clipboard
Copied
Hi,
this will generate 1-9 duplicates but 10 and above I get the dialog box about entering a number between 1 and 99.
How can I get it to exceed 9 duplicates? Or should the warning dialogue actually say 'Must be a number between 1 to 9'?
Cheers
Copy link to clipboard
Copied
Hi @GPGW , You might be better off using the built in InDesign integer dialog field rather than a text prompt, which ensures an integer is entered and returned. Also, you would have to make sure that page shuffling is allowed in order to prevent the new pages being added to a spread—the max number of pages for a spread is 10, which might be triggering the error.
Try this:
var n;
var theDialog = app.dialogs.add({name:"Enter a Number", canCancel:true});
with(theDialog.dialogColumns.add()){
n = integerEditboxes.add({editValue:1, maximumValue:99, minimumValue:1, minWidth:100});
}
if(theDialog.show() == true){
n = n.editValue
theDialog.destroy();
var doc = app.documents[0];
//allow page shuffling
doc.spreads.everyItem().allowPageShuffle = true;
doc.documentPreferences.properties = {allowPageShuffle:true};
var activePage = app.layoutWindows[0].activePage
for (i = 0; i < n; i++) {
activePage.duplicate(LocationOptions.AFTER, activePage);
}
}
Copy link to clipboard
Copied
Thanks @rob day, I tested this with 11 duplicates and it worked a treat 👌
Copy link to clipboard
Copied
I can't help but ask: why not build a Parent Page?