Photopea Tutorials Blog | Learn | Tutorials | Templates | API | |
October 19, 2019

# Edit Smart Objects with a Script

Let's have a look at how we can edit Smart Objects from a Script in Photopea or Photoshop.

The basic DOM (Document Object Model) allows us working with a document, create and edit layers, modify their properites, etc. But there are many operations, for which appropriate DOM commands do not exist.

Photopea and Photoshop can run actions. An action (one step) consists of two parts:

- Name - a string of text, such as "make", "select", etc.
- Descriptor - a structured object with additional parameters of the action

We can create an action (its name and a descriptor) inside a script. Then, it can be executed using `executeAction(Name, Descriptor)`.

## Open, edit and save a Smart Object

The action placedLayerEditContents corresponds to opening a Smart Object.

    // select a layer that you want to work with
    var l = app.activeDocument.layers.getByName("arrow");
    app.activeDocument.activeLayer = l;

    executeAction(stringIDToTypeID("placedLayerEditContents"));

    // now, the Smart Object is an active document, we can work with it
    app.activeDocument.activeLayer.rotate(90);

    // save the smart object and close it
    app.activeDocument.save();
    app.activeDocument.close();

Try it!

## Convert a layer into a Smart Object

The action newPlacedLayer corresponds to clicking Layer - Convert to Smart Object.

    // select a layer that you want to work with
    var l = app.activeDocument.layers.getByName("ground");
    app.activeDocument.activeLayer = l;

    executeAction(stringIDToTypeID("newPlacedLayer"));

Try it!

## Comments

Do you need help? Ask us at our Reddit!