listRows maps positional cells to records using exact source headers. Use it
when downstream code should address columns by name.
Example
Inputs
spreadsheet and source are required. A source is { sheet: string | number; headerRow?: number } or { table: string }; sheet headers default to row 1,
while table metadata supplies native headers and body bounds. from defaults
to start, limit defaults to 100 (maximum 10,000), and offset defaults to 0. valueRender is unformatted (default), formatted, or formula.
account selects the Google account.
Output
rowNumber is one-based and range covers the source columns. Headers must be
non-empty and unique after trimming. Keys match headers exactly; missing and
trailing cells become null.