Automation
Three tools in Scissor do the repetitive work for you: Actions record a sequence of commands and replay it, Variables swap text and visibility from a table of data so one design becomes many, and Scripts drive the whole editor from JavaScript. None of them needs an account or a server — like the rest of Scissor they run on your own machine.
Actions: record once, replay anywhere
The Actions panel (Window › Actions) records what you do and plays it back on a new selection. Press Record, run the commands you want to capture — align, offset, add a shadow, whatever the sequence is — then press Stop and give the action a name. It joins the list, showing how many steps it holds.
Click an action to play it on whatever is selected now; ⌥-click one to delete it. Because an action is just a list of commands, it repeats an exact routine across many objects without you clicking through it each time.
Variables: one design, many versions
The Variables panel (Window › Variables) turns a fixed design into a template driven by data. Two things on an object can be made dynamic:
- Make Text Dynamic
- Binds a type object's words to a variable, so different data sets can put different text in the same place.
- Make Visibility Dynamic
- Binds whether an object shows, so a set can turn parts of the design on or off.
Unbind makes a bound object fixed again.
Data sets
A data set is one row of values for those variables — one badge, one card, one frame. Capture saves the current values as a new set; the arrows step from one set to the next and the design updates to match. Import CSV… reads a whole batch at once — one column per variable, one row per set — and Export CSV writes the sets back out to edit in a spreadsheet.
Exporting every set at once
Export Data Sets… renders the active board once for every data set and writes them all in a single pass, as PNG, JPEG, WebP or SVG. A sheet of name badges, a set of localized banners or a run of social cards comes out as a tidy batch of files, each with its own data filled in.
Scripts: drive Scissor from JavaScript
For anything a menu cannot express, a script can. File › Scripts › Script Console… opens an editor where you write JavaScript and run it against the open document; Other Script… (⌘F12) runs a .js file from disk. A script runs in a Web Worker, away from the page, so it cannot touch the interface or your files except through the scissor object it is given — every call is carried out on the engine and answered back.
The scissor object covers the common ground:
- Make shapes and type
scissor.rect,roundedRect,ellipse,polygon,star,pathandtextdraw artwork; each takes a position and size and an options object forfill,strokeandstrokeWidth(colours are any CSS colour).- Read the document
await scissor.document()returns the app, selection, layers and artboards as the panels see them;scissor.selection()returns just what is selected.- Act on it
scissor.select,groupandundo, andscissor.run(command)for any engine command at all — the same commands the menus send.- Talk back
scissor.logprints to the console;scissor.alertshows a message.
A short example — a ring of coloured dots and a caption:
const doc = await scissor.document();
scissor.log('Boards:', doc.artboards.length);
for (let i = 0; i < 12; i++) {
const a = (i / 12) * Math.PI * 2;
await scissor.ellipse(300 + Math.cos(a) * 120, 260 + Math.sin(a) * 120, 36, 36,
{ fill: `hsl(${i * 30} 80% 60%)` });
}
await scissor.text(230, 270, 'Hello, Scissor', { size: 24 });
The Script Console keeps the last code you ran, so a working script is there when you come back to it.