Logo
HOW TO
Windows XP
Windows Vista
Windows 7
Windows Azure
Windows Server
Windows Phone
 
 
Windows Vista

Adobe InDesign CS5 : Creating and Running Scripts

7/20/2012 9:38:29 AM
At this point, I'm assuming that the appropriate scripting software is installed on your computer. If this is the case, you're ready to begin. For your first trick, you're going to make InDesign roll over — sort of. Actually, you're going to rotate an EPS graphic. First, you'll prepare InDesign for its role. Launch the program and then create a new document (do not select Automatic Text Frame). In the middle of the first page, place an EPS graphic. Make sure that it remains active after you place it.

1. Writing simple scripts

The following three scripts, taken from Adobe's InDesign script examples, do the same thing in JavaScript, AppleScript, and VBA — they rotate an EPS graphic and its frame.

Type the lines that follow this paragraph exactly as they're written for the scripting language you've chosen. Type a return character at the end of each line. Note also the use of straight quotation marks instead of curly typesetter's quotes (the script editor does this for you). Be very careful when you type the text: Typos are script killers.

NOTE

In the code samples below, the ⌝ symbol indicates where a line of code is broken to fit the page width; in the actual script, there would be no ⌝ character, and the line that follows would be combined with the line that now ends in ⌝ .

1.1. JavaScript
var myL ink, myEPs, myFrame;
if(app.documents.length != 0){
 if(app.activeDocument.links.length != 0){
  for(var myLinkCounter = 0; myLinkCounter < ⌝
     app.activeDocument.links.length; myLinkCounter ++){
   myLink = app.activeDocument.links.item(myLinkCounter);
   if(myLink.linkType == "EPS"){
    myEPS = myLink.parent;
    myFrame = myEPS.parent;
    myFrame.rotationAngle = 30;
   }
  }
 }
}

This script first searches through all the items on the page and checks whether any are EPS; if so, it sets the rotation of the item to 30. (Thanks to Adobe's InDesign scripting guru, Olav Martin Kvern, for developing the JavaScript code example.) Note the sequence of actions: First you verify that there is a nonempty document open, and then you check the content type of objects. For those objects of the EPS type, you activate the frame and then apply the rotation to that frame. JavaScripts require you to set your own variables (the var statements) that define what the object is. (Here, myLink is used for each object, myEPS is the object that contains the EPS attribute, and myFrame is the parent frame containing the EPS graphic.) You work with those variables to see what their attributes are and then change those attributes.

If you're in an adventurous mood, try substituting the statement myFrame.rotationAngle = 30; in the preceding script with each of the following statements:

myFrame.shearAngle = 30;
myFrame.verticalScale = 200;

If you want to get really fancy, combine all the myFrame. statements into a single script so that you can use the script to make all the changes at one time.

1.2. AppleScript
tell application "Adobe InDesign CS5"
 activate
 set myPageItems to {EPS, oval, rectangle, polygon}
 set mySelection to selection
 if class of item 1 of mySelection is in myPageItems ⌝
    and (count mySelection) > 0 then
  if class of item 1 of mySelection is EPS then
   set myFrame to parent of mySelection
  else
   set myFrame to item 1 of mySelection
  end if
  set rotation angle of myFrame to 30
 end if
end tell

NOTE

Be sure that a document is open and that you have selected at least one frame of any type before starting the script. Also in the script itself, make sure to type the name of your InDesign program exactly as it appears in the Finder. Because you're free to rename your program, the name may not match the name in the first line of the script.

If you're feeling daring, try substituting the statement set rotation angle of myFrame to 30 in the preceding script with each of the following statements:

set shear angle of myFrame to 30
set vertical scale of myFrame to 200

Here again, you can get fancy by combining all the set statements into a single script so that you can use the script to make all the changes at one time.

1.3. VBA
Dim myInDesign As InDesign.Application
Set myInDesign = CreateObject("InDesign.Application.CS5")
Set mySelection = myInDesign.Selection
If TypeName(mySelection.Item(1)) = "EPS" Then
 mySelection.Parent.RotationAngle = 30
Else
 mySelection.RotationAngle = 30
End If

You might satisfy your adventurous streak by substituting the statement mySelection. RotationAngle = 30 in the preceding script with each of the following statements:

set the color of the current box to "Blue"
set the shade of the current box to 50
set the width of the frame of the current box to 10
set the box shape of the current box to ovular

Go to town if you want: Combine all the set statements into a single script so that you can use the script to make all the changes simultaneously.

Perhaps you noticed the chain of command used in the preceding scripts. First the script addresses InDesign, then the active document (layout), and finally the active frame. If you understand this concept, you'll be scripting like a pro in no time.


2. Labeling items

As you can see from the examples in the previous section, scripts often refer to items by their type and location in the document. But there's another way to refer to objects that makes sure you can select an item precisely: You can label, or name, an item. You do so in the Script Label panel (choose Window => Utilities => Script Label). The process is easy: Select the object and then type a name in the panel. That's it!

When writing scripts, you refer to the labeled object as follows. In these examples, the label is TargetFrame, and don't worry that the samples seem to do different things — they in fact are unrelated examples, not variations of the same command.

2.1. JavaScript
with(app.docum ents.item(0).pages.item(0)){
 myTargetFrame = textFrames.item("myTargetFrame");
}

2.2. AppleScript
select (page item 1 of page 1 of myTargetDocument whose ⌝
label is "TargetFrame")

2.3. VBA
Set myAsset = myLibrary.Assets.Item("TargetFrame")

3. Writing conditio nal scripts

Some scripts simply automate a set of tasks in documents whose content is predictable. But more often than not, documents differ, so you need conditional statements to evaluate certain things to see whether they are true before applying a script's actions. Otherwise, you get an error message when something turns out not to be true. As a simple example, a script that does a search and replace needs to have a document open and a frame selected. If no frame is selected, the script won't know what to search, and the user gets an error message.

The same issue arises for repeated series of actions, where you want the script to do something for all occurrences. The script needs to know what to do when it can't find any more such occurrences. As an example, look at the following script, which counts all open documents. For it to work, at least one document has to be open, so the script checks first to see whether in fact any documents are open and then delivers an error message that the user can understand if none is open. The rotate-EPS-graphic script earlier also used a conditional to make sure there was an EPS graphic in the document. Notice that in all three scripting languages, you use the command if to set up such conditionals.

3.1. JavaScript
if (app.document s.length==0){
 alert("No InDesign documents are open!"); }

NOTE

JavaScript uses == for comparing values (as in the example above) and = for assigning values. Visual Basic and AppleScript use = for both purposes.

3.2. AppleScript
tell application "Adobe InDesign CS5"
 activate
 set myNumberOfDocuments to (count documents)
 if myNumberOfDocuments = 0 then
  display dialog "No InDesign publications are open!"
 end if
end tell

3.3. VBA
Dim myInDesign as InDesign.Application
 Set myInDesign = CreateObject ("InDesign.Application.CS4")
 If myInDesign.Documents.Count
  MsgBox "No InDesign publications are open!"
 End If
End Sub

Another form of conditional is what's called a control loop, in which an action occurs either for a specified number of iterations or until a condition is met. The following scripts show an example of each for each language. Note the use of comments in the scripts — a handy way to document what you're doing for later reference. In JavaScript, a single-line comment begins with //, whereas a multiline comment begins with /* and ends with */. In AppleScript, a comment begins with --and continues until you press Enter or Return. In VBA, it begins with Rem followed by a space, and it continues until you press Enter or Return.

3.4. JavaScript
for (var myCounter = 0; myCounter < 20; myCounter++){
 //do something
}
while (myStop == false){
 /* do something, at some point setting myStop to true
 to leave the loop. */
}

3.5. AppleScript
repeat with counter from 1 to 20
 --do something
end repeat

set myStop to false
repeat while myStop = false
 --do something, at some point setting myStop to true to ⌝
leave the loop.
end repeat

3.6. VBA
For counter = 1 to 20
 Rem do something
Next counter

Do While myStop = false
 Rem do something, at some point setting myStop to true ⌝
 to leave the loop.
loop
Other -----------------
- Adobe InDesign CS5 : Using Scripts - Exploring VBA
- Dreamweaver CS5 : Standard Server Behaviors (part 6) - Stored procedure/command/callable
- Dreamweaver CS5 : Standard Server Behaviors (part 5) - Dynamic elements
- Dreamweaver CS5 : Standard Server Behaviors (part 4) - Update Record, Delete Record & User authentication
- Dreamweaver CS5 : Standard Server Behaviors (part 3) - Go To Detail Page, Related Page & Insert Record
- Dreamweaver CS5 : Standard Server Behaviors (part 2) - Recordset Paging, Move To Specific Record & Show Region
- Dreamweaver CS5 : Standard Server Behaviors (part 1) - Recordset & Repeat Region
- CorelDRAW X5 : Text and Styles
- CorelDRAW X5 : Wrapping Text Around Other Shapes
- Adobe Illustrator CS5 : Working with Layers - Flattening Layers & Locating Objects in the Layers Panel
 
 
REVIEW
- First look: Apple Watch

- 10 Amazing Tools You Should Be Using with Dropbox

- 3 Tips for Maintaining Your Cell Phone Battery (part 1)

- 3 Tips for Maintaining Your Cell Phone Battery (part 2)
 
VIDEO TUTORIAL
- How to create your first Swimlane Diagram or Cross-Functional Flowchart Diagram by using Microsoft Visio 2010 (Part 1)

- How to create your first Swimlane Diagram or Cross-Functional Flowchart Diagram by using Microsoft Visio 2010 (Part 2)

- How to create your first Swimlane Diagram or Cross-Functional Flowchart Diagram by using Microsoft Visio 2010 (Part 3)
 
Popular tags
Microsoft Access Microsoft Excel Microsoft OneNote Microsoft PowerPoint Microsoft Project Microsoft Visio Microsoft Word Active Directory Biztalk Exchange Server Microsoft LynC Server Microsoft Dynamic Sharepoint Sql Server Windows Server 2008 Windows Server 2012 Windows 7 Windows 8 Adobe Indesign Adobe Flash Professional Dreamweaver Adobe Illustrator Adobe After Effects Adobe Photoshop Adobe Fireworks Adobe Flash Catalyst Corel Painter X CorelDRAW X5 CorelDraw 10 QuarkXPress 8 windows Phone 7 windows Phone 8 BlackBerry Android Ipad Iphone iOS
Popular keywords
HOW TO Swimlane in Visio Visio sort key Pen and Touch Creating groups in Windows Server Raid in Windows Server Exchange 2010 maintenance Exchange server mail enabled groups Debugging Tools Collaborating
Top 10
- Microsoft Excel : How to Use the VLookUp Function
- Fix and Tweak Graphics and Video (part 3) : How to Fix : My Screen Is Sluggish - Adjust Hardware Acceleration
- Fix and Tweak Graphics and Video (part 2) : How to Fix : Text on My Screen Is Too Small
- Fix and Tweak Graphics and Video (part 1) : How to Fix : Adjust the Resolution
- Windows Phone 8 Apps : Camera (part 4) - Adjusting Video Settings, Using the Video Light
- Windows Phone 8 Apps : Camera (part 3) - Using the Front Camera, Activating Video Mode
- Windows Phone 8 Apps : Camera (part 2) - Controlling the Camera’s Flash, Changing the Camera’s Behavior with Lenses
- Windows Phone 8 Apps : Camera (part 1) - Adjusting Photo Settings
- MDT's Client Wizard : Package Properties
- MDT's Client Wizard : Driver Properties
 
Windows XP
Windows Vista
Windows 7
Windows Azure
Windows Server
Windows Phone
2015 Camaro