Skip to main content
Inspiring
August 19, 2017
Question

Script to create a Frame around Page?

  • August 19, 2017
  • 1 reply
  • 540 views

I'm trying to create a script that creates a box/frame that does the following below numbered items. When i try to combine all the below i get all kinds of errors. I tried stripping away parts from other scripts i have and placing them in the script i'm trying to make but i'm having quite a hard time with it. Most of these documents have one page but there are a few that have 2 pages. Not all the documents that i'm adding these too will be the same size.  all the pages in the documents will be the same as the first page.

1     Before the document is opened or created. automatically Create a Frame (Around the Page).

2     Put a overprint stroke (.0625in) around it "no fill".

3     Create a color (Lab or CMYK value)with a specific name in my case (Diecut)"and apply it to the above stroke.

4     and place it in its own layer.

I have some parts i think!

function moveLayer(){

  layers = app.documents[0].layers; 

   if (layers.item('Diecut').isValid) { 

    layers.item('Diecut').move (LocationOptions.AT_END); 

    }

  /*  if (layers.item('Layer 1').isValid) { 

layers.item('Layer 1').move (LocationOptions.AT_BEGINNING); 

    } */

}

I think this will create a layer?

function addLayer(doc, name){ 

  try{ 

   var layer = doc.layers.itemByName(name); 

    if(layer && layer.isValid) { 

     return layer; 

      } else { 

    var myLayer = doc.layers.add(); 

     myLayer.name = name;

      myLayer.layerColor = [100,100,100]

       return myLayer; 

    } 

   } catch(e) { 

  } 

This will move my text frame to the Layer

function move(event){      

  var doc = event.target;    

   if(!(doc && doc.constructor.name == "Document")) { 

    return; 

   } 

   var myLayer = addLayer(doc, "Diecut"); 

Thank you.

This topic has been closed for replies.

1 reply

cbishop01Author
Inspiring
August 21, 2017

to get real technical this is the script i'm trying to add it to.  When i duplicate lines 180-235 the script stops working.  not sure why.  I change from "SaveInfo" to Diecut.

//Event Listeners

app.addEventListener( "beforeExport", doOverset );

app.addEventListener( "beforeSave" , doZeroPoint );

app.addEventListener( "afterOpen" , doZeroPoint );

app.addEventListener( "beforeSave", doULockLayer );

app.addEventListener( "beforeClose", doLockLayer );

app.addEventListener( "beforeSave" , doTextFrameOnPageOne ); 

app.addEventListener( "afterOpen", doJob );

app.addEventListener( "beforeSave", doMoveLayer );

app.addEventListener( "beforeSave", doTrashSwatch );

app.addEventListener( "afterOpen", doTCON );

app.addEventListener( "beforeExport", doPDFinfo );

app.addEventListener( "beforeExport", doLOGinfo );

    #targetengine "AutoStartScript"

function doLOGinfo(){

    var main = function() { 

      var ids ={}; 

      var el = app.eventListeners.itemByName('onAfterExport'),

onAfterExportHandler = function(evt){

      var doc = evt.parent, time; 

      if ( doc.constructor.name=="Document" ) { 

      if ( !ids[doc.id+"_"+evt.timeStamp] ) {

ids[doc.id+"_"+evt.timeStamp] = 1; 

      log ( evt ); 

      } 

      } 

      }; 

      !el.isValid && app.eventListeners.add('afterExport', onAfterExportHandler).name = 'onAfterExport'; 

    } 

     

     

    var log  = function (evt){ 

      var headers = ["Indesign User Name", "Time", "Date", "Output Location and Name", "Document Name", "Document path"]; 

      var exportFile = File ( evt.fullName ); 

      var f = File ( Folder("/Volumes/PPG/z-z MISC STUFF")+"/exports.csv" ); 

      var fOk = f.exists; 

      var d = (new Date()); 

      var m = d.getMonth()+1; 

      m<10 && m = "0"+m; 

     

      var hh = d.getHours(); 

      var pm  = hh>11;

      pm && hh>12 && hh-=12; 

      hh<10 && hh = "0"+hh; 

      var mm = d.getMinutes(); 

      mm< 10 && mm = "0"+mm; 

     

      var doc = evt.parent; 

f.open('a'); 

      !fOk && f.writeln ( headers.join(";") );

f.writeln([app.userName, hh+":"+mm+" "+(pm? "PM":"AM"), m+"/"+d.getDate()+"/"+d.getFullYear(), exportFile.fsName, doc.name, doc.properties.fullName? doc.fullName : "Not saved" ].join(";") ); 

      f.close(); 

    }; 

     

     

    main(); 

   

    }

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Add Metadata to PDF on who exported label<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\     

function doPDFinfo (){

    var kws = app.activeDocument.metadataPreferences.author;

   // app.activeDocument.metadataPreferences.keywords = kws.concat ( "Exported BY:   " + app.userName);

app.activeDocument.metadataPreferences.author = app.userName;

    }

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Turns on Track Changes<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\     

function doTCON (){

    var myEventListener = app.eventListeners.item("TurnTCon"); 

        

    if (!myEventListener.isValid) {    

myEventListener = app.addEventListener("afterOpen", doJob );    

myEventListener.name = "TurnTCon";    

    }    

        

    function doJob(event) { 

        try{ 

if(event.parent.constructor.name == "Document") { 

                var myDocument = event.parent; 

if(myDocument.stories.length > 0) {

var myStory = myDocument.stories.everyItem().trackChanges = true;  

                } 

            } 

        }catch(e) {  }

    }     

}   

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Fills Overset Text frames Magenta<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\     

function doOverset(){

   

    if (parseFloat(app.version) < 6) 

    main(); 

    else 

    app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "Splice Image Along Path"); 

    function main() { 

        var doc = app.activeDocument; 

        var stories = doc.stories; 

for(s=0;s<stories.length;s++){

            var lastFrame = stories.textContainers[stories.textContainers.length - 1]; 

if(stories.overflows){ 

if(lastFrame.constructor.name == "TextFrame"){ 

lastFrame.fillColor = "Magenta"; 

}if(lastFrame.constructor.name == "TextPath"){ 

lastFrame.fillColor = lastFrame.parent.strokeColor = "Magenta"; 

                } 

}else{ 

if(lastFrame.constructor.name == "TextFrame"){ 

if(lastFrame.fillColor.name == "Magenta"){ 

lastFrame.fillColor = "None";

}if(lastFrame.constructor.name == "TextPath"){ 

if(lastFrame.parent.fillColor.name == "Magenta" && lastFrame.parent.strokeColor.name == "Magenta"){ 

lastFrame.fillColor = lastFrame.parent.strokeColor = "None" 

                }

            } 

             

        } 

    } 

    }

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>LOCK / Unlock SAVEINFO LAYER<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\ 

   function doLockLayer(){

app.activeDocument.layers.item("SaveInfo").locked = true;

       }

   function doULockLayer(){

app.activeDocument.layers.item("SaveInfo").locked = false;

       }

  

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>IMPORT PARAGRAPH AND CHARATER STYLES<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\ 

    function doJob(){  

        var theDocument = app.activeDocument;   

        var sourceFile = new File("/PPG/z-z MISC STUFF/INDESIGN SCRIPTS/RG Template.indd"); 

    //import paragraph styles   

        var paraImport = ImportFormat.PARAGRAPH_STYLES_FORMAT;

    //This will import without overwrite existing styles.   

        var clashPolicy = GlobalClashResolutionStrategy.DO_NOT_LOAD_THE_STYLE;   

theDocument.importStyles(paraImport, sourceFile, clashPolicy);   

}

  

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>RESET ZERO POINT TO 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\ 

   function doZeroPoint(){

app.documents[0].zeroPoint = [0,0];

          }

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>DELETE UNUSED COLOR SWATCHES<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    function doTrashSwatch(){

     for(var i = 0; i < app.documents.length; i++){ 

    var myIndesignDoc = app.documents;  

app.menuActions.itemByName("$ID/Add All Unnamed Colors").invoke(); 

    var myUnusedSwatches = myIndesignDoc.unusedSwatches;   

    for (var s = myUnusedSwatches.length-1; s >= 0; s--)

    {   

        var mySwatch = myIndesignDoc.unusedSwatches;   

        var name = mySwatch.name;   

    // alert (name);   

        if (name != ""){   

mySwatch.remove();  

         }   

    }   

}

}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>MOVE LAYERS TO THEIR DEISRED LOCATIONS<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    function doMoveLayer(){

        layers = app.documents[0].layers; 

    if (layers.item('SaveInfo').isValid) { 

layers.item('SaveInfo').move (LocationOptions.AT_END); 

    }

  /*  if (layers.item('Layer 1').isValid) { 

layers.item('Layer 1').move (LocationOptions.AT_BEGINNING); 

    } */

}

     

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>CREATE NEW LAYER FOR SAVE CHANGES<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\ 

    function doLayer(){

    var _d = app.documents[0]; 

    var _allStories = _d.stories; 

    for(var n=_allStories.length-1;n>=0;n--){ 

    var _storyAllTextFrames = _allStories.textContainers; 

        for(var m=_storyAllTextFrames.length-1;m>=0;m--){

            //If the contents of a text frame is an empty string:

            if(_storyAllTextFrames.contents === ""){ 

_storyAllTextFrames.select(); 

//Convert frame to "Unassigned": 

      /*      try{

app.scriptMenuActions.itemByID(11297).invoke(); 

}catch(e){};  */

}; 

            }; 

        }; 

     

    //Trick to deselect the last selection 

    //Add a new textFrame, select and remove it: 

    var _tempTextFrame = _d.textFrames.add(); 

_tempTextFrame.select(); 

    _tempTextFrame.remove(); 

       }

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>NEW LAYER SETTINGS<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\ 

    function addLayer(doc, name){ 

    try{ 

            var layer = doc.layers.itemByName(name); 

            if(layer && layer.isValid) { 

return layer; 

                } else { 

            var myLayer = doc.layers.add(); 

myLayer.name = name;

             myLayer.layerColor = [100,100,100]

                return myLayer; 

        } 

      } catch(e) { 

     } 

    } 

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>CREATE TEXT FRAME FOR SAVE INFO<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    function addTextFrame(doc, layer, name){ 

        var myBlendingSettings = { blendMode : BlendMode.OVERLAY };       

        var myTransparencySettings = { blendingSettings : myBlendingSettings };    

         

        var tf = doc.textFrames.itemByName(name); 

        if(tf && tf.isValid) {       

tf.remove(); 

        } 

        var origUnit = app.scriptPreferences.measurementUnit;

app.scriptPreferences.measurementUnit = MeasurementUnits.INCHES;

        tf = doc.textFrames.add(layer, LocationOptions.UNKNOWN, {name: name, fillColor :"Yellow", fillTint: 20, transparencySettings : myTransparencySettings,

geometricBounds: ['0in','-5.25in','1.0731in','-.75in'] });        

        app.scriptPreferences.measurementUnit = origUnit;     

              return tf; 

    } 

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ADD TEXT FRAME TO LAYER<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    function addTable(tf){ 

        var myTable = tf.texts[0].tables.add       

            (       

               {        

                 // Number of Rows and Columns.     

bodyRowCount : 6 ,        

columnCount : 2        

             }       

        );      

     

    return myTable; 

        }

   

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>NAME LAYER AND ADD VARIABLES TO TEXT FRAME<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    function addVariable(doc, name, value){ 

        var v = doc.textVariables.itemByName(name); 

        if(v && v.isValid) 

return; 

     

        v = doc.textVariables.add({name:name, variableType:VariableTypes.CUSTOM_TEXT_TYPE}); 

v.variableOptions.contents = value;     

    } 

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>MOVE TEXT FRAME TO LAYER<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    function doTextFrameOnPageOne(event){      

           

        var doc = event.target;    

        if(!(doc && doc.constructor.name == "Document")) { 

return; 

        } 

           

        var myLayer = addLayer(doc, "SaveInfo"); 

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>COLUMN 1 OF TABLE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

        var columnOneContentsArray = [

            

"Document:" ,       

"User Name:",      

"Computer Name:",     

"Date Modified:",

"Date Output:",     

"Date Created:",     

"Output Date:"       

        ];   

       

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>COLUMN 2 OF TABLE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

        var columnTwoContentsArray = [    

            ];    

                  

        var tf = addTextFrame(doc, myLayer, "SaveInfo");

       

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TABLE PROPERTIES<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

        var myTable = addTable(tf); 

myTable.columns[0].cells.everyItem().texts[0].pointSize = 6;

myTable.columns[0].cells.everyItem().texts[0].appliedFont = app.fonts.item("Minion Pro");

myTable.columns[1].cells.everyItem().texts[0].pointSize = 6;

myTable.columns[1].cells.everyItem().texts[0].appliedFont = app.fonts.item("Minion Pro");

setColumnWidthsAndAlignments(myTable)

    function setColumnWidthsAndAlignments(tableObj) 

       { 

        var myWidths=['1.0731in', '3.413in', '3in', '3in'];

        var myAlignments=[Justification.LEFT_ALIGN,Justification.LEFT_ALIGN]; 

        var numberOfColumns=tableObj.columns.count();

        for (c=0;c<numberOfColumns;c++) 

       { 

myTable.columns.width=myWidths;

myTable.columns.cells.everyItem().texts.everyItem().justification=myAlignments

       } 

      }      

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>CREATE NEW CUSTOM VARIABLES<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

        var md = doc.textVariables.itemByName("Output Date");

md.variableOptions.format = "MMMM dd, yyyy hh:mm a";

        var md = doc.textVariables.itemByName("Creation Date");

md.variableOptions.format = "MMMM dd, yyyy hh:mm a";

            tv = doc.textVariables.item("Users Name");   

!tv.isValid && tv = doc.textVariables.add({name:"Users Name", variableType:VariableTypes.CUSTOM_TEXT_TYPE});           

tv.variableOptions.contents = String( getAppUserName() ); 

            tvL = doc.textVariables.item("CLN");

!tvL.isValid && tvL = doc.textVariables.add({name:"CLN", variableType:VariableTypes.CUSTOM_TEXT_TYPE});   

tvL.variableOptions.contents = String( getLogInUserName() );

          

                   

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>PLACING TEXT VARIABLE INFORMATION IN THE CELLS & COLUMN<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

        var R1, R2, R3, R4, R5, R6;      

myTable.columns[0].contents = columnOneContentsArray;       

myTable.columns[1].contents = columnTwoContentsArray;       

        var cell0OfColumn2insertionPoint1 = myTable.columns[1].cells[0].insertionPoints[0];      

        var R1 = cell0OfColumn2insertionPoint1.textVariableInstances.add(LocationOptions.AFTER, cell0OfColumn2insertionPoint1);

R1.associatedTextVariable = doc.textVariables.itemByName("File Name");      

        var cell1OfColumn2insertionPoint1 = myTable.columns[1].cells[1].insertionPoints[0];     

        var R2 = cell1OfColumn2insertionPoint1.textVariableInstances.add(LocationOptions.AFTER, cell1OfColumn2insertionPoint1);   

R2.associatedTextVariable = doc.textVariables.itemByName("Users Name")        

        var cell2OfColumn2insertionPoint1 = myTable.columns[1].cells[2].insertionPoints[0];         

        var R3 = cell2OfColumn2insertionPoint1.textVariableInstances.add(LocationOptions.AFTER, cell2OfColumn2insertionPoint1);

R3.associatedTextVariable = doc.textVariables.itemByName("CLN");        

        var cell3OfColumn2insertionPoint1 = myTable.columns[1].cells[3].insertionPoints[0];       

        var R4 = cell3OfColumn2insertionPoint1.textVariableInstances.add(LocationOptions.AFTER, cell3OfColumn2insertionPoint1);

R4.associatedTextVariable = doc.textVariables.itemByName("Modification Date");      

        var cell4OfColumn2insertionPoint1 = myTable.columns[1].cells[4].insertionPoints[0];      

        var R5 = cell4OfColumn2insertionPoint1.textVariableInstances.add(LocationOptions.AFTER, cell4OfColumn2insertionPoint1);

R5.associatedTextVariable = doc.textVariables.itemByName("Output Date");      

        var cell5OfColumn2insertionPoint1 = myTable.columns[1].cells[5].insertionPoints[0];     

        var R6 = cell5OfColumn2insertionPoint1.textVariableInstances.add(LocationOptions.AFTER, cell5OfColumn2insertionPoint1);

R6.associatedTextVariable = doc.textVariables.itemByName("Creation Date");        

        }       

     

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>L# Date<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>COMPUTER NAME TEXT VARIABLE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    function getLogInUserName(){       

            

         

         var userNameOSX = $.getenv("USER");

         var userNameWindows = $.getenv("USERNAME");       

               

if(userNameWindows == null){return userNameOSX}       

else{return userNameWindows};

               

        }       

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>APPLICATION USER NAME TEXT VARIABLE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\\

    function getAppUserName(){

          return app.userName;

          }