Search code examples
scriptingadobe-indesign

Indesign script: how to pasteboard items


I have this script that finds a paragraph style, puts an item from a library at the very end and applies object style:

myDoc = app.documents[0];

myLib = app.libraries[0];

myObjectStyle = myDoc.objectStyles.item ("marker");



app.findTextPreferences = app.changeTextPreferences = null; 

          app.findTextPreferences.appliedParagraphStyle = "Custom"

        var myFound = app.activeDocument.findText(true);

        alert (myFound.length);

try {

   for (i = 0; i < myFound.length; i++) {

      myIcon = myLib.assets.itemByName("winieta_tr").placeAsset (myFound[i].insertionPoints[-2])[0];

      myIcon.appliedObjectStyle = myObjectStyle;

     // myFound[i].remove ();

      }

   }

catch (e) {alert (e.message)}

I don't know how to alter it, so the items are obtained not from library but form pasteboard - any help would be appreciated.

Is it possible to find elements that are in the document by name, as it is with library elements?


Solution

  • Yes, you can find an object by name (you would assign that name in the layers panel) simply by using

    myDoc.pageItems.itemByName("myItemName");
    

    If you are looking for the same thing on a specific spread (for example if several items on several spreads have the same name), you can use

    myDoc.spreads[0].pageItems.itemByName("myItemName");
    

    Or if you just want to use the currently active spread

    app.activeWindow.activeSpread.pageItems.itemByName("myItemName");
    

    Just make sure not to use the page to address a page item on the pasteboard as the pasteboard does not belong to any page.