Copy link to clipboard
Copied
I have a text box at the beginning of each page and I want to alphabetical order pages based on that text box. Do you know how to do that?
This will do it.
But see also http://forums.adobe.com/thread/1082984?tstart=0 for a better workflow.
For some reason the OP over there didn't get back to say thanks and mark the answer as correct .
Trevor
...// Script to sort Pages according to alphabetical order of their top TextFrames contents
// by Trevor (www.creative-scripts.com [coming soon]) custom and readymade scripts for InDesign
// http://forums.adobe.com/thread/1405293?tstart=0
// see also http://forums.adobe.com/thread/1082984?tstart=0 for a
Copy link to clipboard
Copied
I've moved this to the scripting forum. If anyone knows, it will be the users here.
Copy link to clipboard
Copied
This will do it.
But see also http://forums.adobe.com/thread/1082984?tstart=0 for a better workflow.
For some reason the OP over there didn't get back to say thanks and mark the answer as correct .
Trevor
// Script to sort Pages according to alphabetical order of their top TextFrames contents
// by Trevor (www.creative-scripts.com [coming soon]) custom and readymade scripts for InDesign
// http://forums.adobe.com/thread/1405293?tstart=0
// see also http://forums.adobe.com/thread/1082984?tstart=0 for a better workflow
app.doScript("aToZPageSort()", ScriptLanguage.javascript, undefined, UndoModes.FAST_ENTIRE_SCRIPT, "Sort Pages By top text contents");
function aToZPageSort () {
var doc = app.documents[0],
myPageIndex = [],
l = doc.pages.length,
topFrameIndex = z= 0, pageFramesTops, i, topFrameHeight, topFrame;
while (l--) {
pageFramesTops = doc.pages
.textFrames.everyItem().getElements().slice(0); n = i = pageFramesTops && pageFramesTops.length;
if (!i) continue;
while (n--) pageFramesTops
= pageFramesTops .geometricBounds[0]; // for some reason when one trys to get the geometricBounds[0] from teh everyItems without the elements it return y1, x1 and not just y1 ?-) topFrameHeight = pageFramesTops[0];
topFrame = doc.pages
.textFrames[0]; for (var n = 0; n< i ; n ++) {
if (pageFramesTops
< topFrameHeight) { topFrameHeight = pageFramesTops
; topFrame = doc.pages
.textFrames ; }
}
myPageIndex [z++] = {page: topFrame.parentPage, contents: topFrame.contents.toLowerCase()}
}
myPageIndex.sort (function (a,b) {return (a.contents.toLowerCase() > b.contents.toLowerCase())});
l = myPageIndex.length;
while (l--) myPageIndex
.page.move (LocationOptions.AT_BEGINNING); }
Copy link to clipboard
Copied
Trevor,
Thank you so much! However I am very new in indesign and I even don't know how to add this script into my document
I hope I am not being a pain! Could you help me on that?
Many thanks...
Copy link to clipboard
Copied
In InDesign go to the scripts panel
Alt +(Ctr / Command) + F11
or Ctrl enter then type scripts and select script panel
or go to Windows / Utilities / Scripts
Then on the panel right click the user folder and click on the USER folder and click on reveal in explorer
You now have have the script folder open
Copy the above script and paste it into any text editor.
Save it in the script folder with the extension .jsx
Alphabetical Page Sort.jsx might be a good name to choose.
Lock in the script panel and you should see the script there in the User folder
Click on it to run it.
If the script does not appear there then close and reopen the scripts panel.
Copy link to clipboard
Copied
P.s.
I think Peter would agrea that the correct answer should go to me and not him
Copy link to clipboard
Copied
Absolutely, and I've made the change.
You're lucky I'm still subscribed.
Copy link to clipboard
Copied
Thanks Peter,
Ever indebted
Copy link to clipboard
Copied
Thank you... very much appreciated and helpful!
Copy link to clipboard
Copied
YAHOO!!! SO GRATEFUL for this script... just used it myself too
Copy link to clipboard
Copied
I tried this and the script keeps giving me this error (on a mac) any tips?
Copy link to clipboard
Copied
Hello Trevor! I have a similar situation and I have been trying to make it run without success... I get this error:
Any ideas?
Copy link to clipboard
Copied
Nevermind! Figured it out. I had some paragraph breaks in the header. You are supposed to have only one line. Thank you!