It has been said that there is nothing that people fear more than change. This is especially true when it comes to a change in a production workflow. Consider a workflow where copywriters and editors use their text editor of choice (not InCopy). When you assign a story to a copywriter the only criteria may be “make it about 1000 words”. From there, you, the designer need to make whatever copy you receive fit. So you cut, squeeze, modify layout, add pull quotes; in other words, you do whatever you can to make the text fit, often at the sacrifice of your well thought out layout. But more importantly, with a substantial increase in production time. The time differential is of no concern to the copywriter, it was enough to have to try to come up with “about 1000 words.”

To keep your sanity, you decide to use InCopy now that it will be included with the applications in Creative Cloud.

When you announce that you will be using InCopy for text entry and editing, you may get a taste of the 1000 reasons copywriters and editors don’t want to make the change:


  • Learning to use a different text editor
  • Having to open an existing assignment document that resides in a specified folder
  • Having to check out a story before entering any text
  • Having to check the story back in when done
  • and more reasons, only the copywriter or editor can think of

In defense, you may point out that this new editor will improve overall production.


  • Provides precise control for copy fitting
  • Allows copywriters and editors to see exactly how the story will appear in the layout
  • Allows editors to make edits to the story before actually being placed in the layout
  • Allows for last minute changes or updates to stories
  • Allows up to the minute tracking of changes
  • Identifies users who were involved at any stage of the workflow by means of a user name and associated color. (Assigning user names and colors is something you may want to manage.)


The deal-maker for users accepting the workflow change will be when you show them how easy the process can be. You make it easy by doing some of the work for them and having them use a script. The script can open the assignment file and check out stories for editing. The script below is just one idea of how this can be done.


  • The document for the project will be given a specified name and reside in a specified folder. (For the purpose of the sample script below, the working folder will be named “Newsletter” and reside in the user’s Public folder.)
  • The specified folder is made available to all users (authors, editors, etc.)
  • Each assignment designates stories within a discrete number of document spreads assigned to a particular user
  • The name of the assignment contains the user’s name as in “Page1_Joe” or “Spread2_Mary”
  • When an assignment is created, the user name and color are assigned
  • When the user gets ready to work on an assignment, the following script is run using a keyboard shortcut which has been assigned to the script.


    (*Opens file based on user name and checks out stories. 
    Files are found based on files in folder containing the user's name. 
    If more than one file is found, the user is given a list from which to choose the file. 
    If no files are found, a dialog is presented and the script terminates.*)
    	set userName to getUserName()
            --get list of file names in working folder which contains name of user
    	set publicFolder to path to public folder from user domain as string
    	set workingFolder to publicFolder & "Newsletter:Newsletter Assignments"
    	tell application "Finder"
    		set nameList to name of files of folder workingFolder whose name contains userName
    	end tell
            --If file is found, pass file path to handler to have InCopy open it
    	if length of nameList = 1 then
    		set filePath to workingFolder & ":" & item 1 of nameList
    		openFile(filePath, userName)
    	else if length of nameList = 0 then
    		error ("No assignments for user " & userName)
    		set fileChoice to choose from list nameList
    		if class of fileChoice = list then
    			set filePath to workingFolder & ":" & item 1 of fileChoice
    		end if
    	end if
    on error errStr
    	display alert (errStr)
    end try
    (*Opens file and checks out stories for assignment*)
    on openFile(filePath, userName)
    	set myAssignment to missing value
    	tell application "Adobe InCopy CC"
                    set origPref to user interaction level of script preferences
    		set user interaction level of script preferences to never interact
    		open file filePath
    		set docRef to document 1
                    set active page of window 1 to page 1 of docRef
                    set view tab of window 1 to story view
                    set user interaction level of script preferences to origPref
    		set assignList to assignments of docRef
    		repeat with i from 1 to length of assignList
    			if user name of item i of assignList = userName then
    				set myAssignment to item i of assignList
    				exit repeat
    			end if
    		end repeat
    		if myAssignment = missing value then
    			error ("No assignment found for user " & userName)
    		end if
    		set myStories to assigned stories of myAssignment
    		repeat with i from 1 to length of myStories
    			set myStory to story reference of item i of myStories
    			tell myStory to check out
    		end repeat
    	end tell
    end openFile
    (*Returns user name*)
    on getUserName()
    	tell application "Adobe InCopy CC"
    		set userName to user name
    	end tell
    	return userName
    end getUserName

    The purpose of the script above is to demonstrate one way this part of the workflow could be handled. You may have another approach in mind, one which may incorporate a similar script. Because scripts are fairly lengthy, they will be posted for download from our website.

    In the next blog, we will show you how to set up your document and assignments to make this workflow possible.