The one class of sheet content that appears in no other section. Everything else these reports describe lives in cells and is reachable by address; a movable floats over the grid and is invisible to every values, region and rule listing — so without these a report about a dashboard sheet says the sheet is nearly empty, which is true of its cells and false of what anyone looking at it sees.
A section per type, the way tables have one. A reader looks for charts, or for the notes an author left; nobody looks for "movables", which is the SDK's word for how these are stored. The heading is the type, so no row spends a column repeating it.
Rows are anchor · preset · prose · "text". The anchor is what getRange() takes and says which
cells the object is about; the preset says what kind of shape it is — a callout points at
something, a text box stands alone. A chart's type takes the preset's column, and what it plots
is labeled lines beneath its row, the way a table's facts are: a chart states three ranges, and
on one line nothing says which is which.
What is written on a shape rides its row, and those rows lead — in reading order, ahead of the rest in z-order. Text on a shape is almost never decoration: it is a note from the author to the reader — what a block means, which cell to change, what not to touch — and the heading counts them so a reader knows to look. Leading also makes the cap safe: what it eats is bare rectangles. Hidden movables are listed and marked; they are the ones a reader cannot otherwise learn about.
One section per content type —
## Charts (1),## Shapes (11 · 4 with text)— over the pictures, charts, shapes and slicers floating over the report's range.