Site logo

Assignment

How to move unassigned story to an assignment (for InCopy)

Question: I want to add a story to a new assignment with JavaScript. I found out how to create an assignment, and how to make a icml and icma document. However, it comes in unassigned InCopy items, and I can't find a way to place it into my new assignment.

Answer: In my opinion, this is one of those rare occasions when functionality available in UI is unavailable to script. But I think it's possible to workaround this isue like so:

var doc = app.activeDocument;    
if (app.selection.length == 0 || app.selection[0].constructor.name != "TextFrame") exit();    
var textFrame = app.selection[0];    
var assignmentFile = new File("~/Desktop/Test.icma");    
var incopyFile = new File("~/Desktop/Test.icml");
var assignment = doc.assignments.add(assignmentFile, undefined, false, {name: "Test"});  
var unassignedContent = doc.assignments.item("Unassigned InCopy Content");    
textFrame.texts[0].exportFile(ExportFormat.INCOPY_MARKUP, incopyFile);    
unassignedContent.assignedStories[0].move(LocationOptions.AT_END, assignment);    
assignment.update();  
assignment.update(); 

The code above was adapted to CC 2018; below is the original code for CS3.

var doc = app.activeDocument;  
if (app.selection.length == 0 || app.selection[0].constructor.name != "TextFrame") exit();  
var textFrame = app.selection[0];  
var assignmentFile = new File("~/Desktop/Test.inca");  
var incopyFile = new File("~/Desktop/Test.incx");  
var assignment = doc.assignments.add("Test", assignmentFile, {name:"Test"});  
var unassignedContent = doc.assignments.item("Unassigned InCopy Content");  
textFrame.texts[0].exportFile(ExportFormat.INCOPY_DOCUMENT, incopyFile);  
unassignedContent.assignedStories[0].move(LocationOptions.AT_END, assignment);  
assignment.update();