Learning in public — this reference is being written in the open. Unfinished pages are excluded from search engines.
paged.IDML Reference
The Paged PlatformScripting (paged.*)

Scripting with paged.*

The Boa-based scripting layer — a sandboxed ECMAScript surface for reading and authoring a paged document through the paged.* host API. The full surface is generated from the engine catalog.

Tier: IntermediateIntermediateIIexplanation

In short paged embeds a Boa ECMAScript engine and exposes a single global, paged.*, for inspecting and editing the open document. The same surface runs in the editor's script panel/REPL and headless via the paged-run CLI. This reference is generated from the engine's own catalog, so it always matches the running engine exactly.

The shape of a script

A script is plain ECMAScript (no modules, no I/O — see constraints). It addresses elements by id, reads with paged.inspect / paged.get, and edits with paged.set and the structural authoring functions. Every write returns a boolean so a script can branch on success.

const frame = paged.selection()[0];
if (frame) {
  paged.set(frame, "fillColor", "Color/Red");
  paged.set(frame, "frameRotation", 12);
}

What's here

  • Host functionsevery paged.* function, grouped by kind (read, write, author, history, console).
  • Settable pathsthe property names you can pass to paged.set, plus the id grammar for addressing elements.
  • Constraintsthe sandbox rules and execution budgets.
  • textFrame:<id> e.g. textFrame:u123A text frame. Same scheme: rectangle:/oval:/polygon:/graphicLine:/group:.
  • group:<id> e.g. group:u88A group. `paged.set("group:<id>", "groupTransform", [a,b,c,d,tx,ty])` moves it as a unit.
  • storyRange:<storyId>@<start>..<end> e.g. storyRange:Story/u1@0..6A character range within a story (half-open). storyId comes from paged.stories()[].selfId.

On this page