Skip to content
SumOfficeSumOfficeSumOffice

Cells and ranges

Cell editing, reading details, shifts, copy and paste, find and replace, sorting, undo and redo, navigation around the sheet. Operations on the page: 23.

Cell editing, reading details, shifts, copy and paste, find and replace, sorting, undo and redo, navigation around the sheet. Terms are in the glossary.

Applies a batch of cell edits in one atomic action: either all the edits apply, or none of them do.

Request

Field TypeScript type Req. Note from the contract
operation "apply_cell_edits" yes
subsetId string yes
edits CellInputEdit[] yes
viewport ViewportWindow | null no
expectedRevision number | null no An optional race-condition check. If this field is present, it must match the workbook’s current history revision; on a mismatch, the request is rejected with apply-cell-edits-stale-revision, and nothing changes. Without this field, the edit is applied unconditionally.
requestedBackend ComputeBackendKind | null no

Response on success · apply_cell_edits

Field TypeScript type Req.
operation "apply_cell_edits" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
editedKeys string[] yes
changedKeys string[] yes
dirtyCellCount number yes
sheetProtected boolean yes
conditionalFormattingRules ContractConditionalRule[] no
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes
tableMetadata ContractTableMetadataProjection | null no
workbookTableMetadata ContractTableMetadataProjection | null no
workbookHistory ContractWorkbookHistoryProjection yes

Minimal JSON template

{
"operation": "apply_cell_edits",
"subsetId": "<subsetId>",
"edits": [],
"requestedBackend": "native-desktop"
}

Applies a cell shift.

Request

Field TypeScript type Req.
operation "apply_cell_shift" yes
subsetId string yes
sheetKey string yes
rowStart number yes
rowEnd number yes
colStart number yes
colEnd number yes
direction ContractXlsxCellShiftDirection yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · apply_cell_shift

Field TypeScript type Req.
operation "apply_cell_shift" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
range CellRange yes
direction ContractXlsxCellShiftDirection yes
changedRows number[] yes
changedColumns number[] yes
shiftedCellCount number yes
removedCellCount number yes
cellShiftClaim "live_verified" yes
shiftScope "active_visible_value_cells_current_sheet" yes
formulaReferenceRewriteClaim "no" yes
mergeReferenceRewriteClaim "no" yes
dirtyCellCount number yes
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes
layoutMetrics ContractLayoutMetricsSubset yes

Minimal JSON template

{
"operation": "apply_cell_shift",
"subsetId": "<subsetId>",
"sheetKey": "<sheetPath>",
"rowStart": 0,
"rowEnd": 0,
"colStart": 0,
"colEnd": 0,
"direction": "<ContractXlsxCellShiftDirection>",
"requestedBackend": "native-desktop"
}

Clears a sheet within given bounds.

Request

Field TypeScript type Req.
operation "clear_sheet_bounded" yes
subsetId string yes
sheetKey string yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · clear_sheet_bounded

Field TypeScript type Req.
operation "clear_sheet_bounded" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
clearedSheet ContractActiveSheetMeta yes
activeSheet ContractActiveSheetMeta yes
sheetCount number yes
workbookSheets ContractWorkbookSheetMeta[] yes
geometry ContractGeometrySubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes
layoutMetrics ContractLayoutMetricsSubset | null no
workbookHistory ContractWorkbookHistoryProjection yes
sheetClearClaim "live_verified" yes
clearScope "active_worksheet_cells_only_preserve_sheet_metadata" yes
formattingClearClaim "no" yes

Minimal JSON template

{
"operation": "clear_sheet_bounded",
"subsetId": "<subsetId>",
"sheetKey": "<sheetPath>",
"requestedBackend": "native-desktop"
}

Commits replacements in a workbook subset.

Request

Field TypeScript type Req.
operation "commit_replacements_in_workbook_subset" yes
subsetId string yes
query string yes
replacement string yes
matchCase boolean no
matchEntireCell boolean no
lookIn ContractFindLookIn yes
scope ContractFindScope yes
searchOrder ContractFindSearchOrder no
expectedRevision number yes
locale string no
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · commit_replacements_in_workbook_subset

Field TypeScript type Req.
operation "commit_replacements_in_workbook_subset" yes
subsetId string yes
session ContractSubsetSessionInfo yes
scope ContractFindScope yes
lookIn ContractFindLookIn yes
searchOrder ContractFindSearchOrder yes
plannedEditCount number yes
appliedEditCount number yes
changedKeys string[] yes
dirty boolean yes
recalcNeeded boolean yes
workbookHistory ContractWorkbookHistoryProjection yes

Minimal JSON template

{
"operation": "commit_replacements_in_workbook_subset",
"subsetId": "<subsetId>",
"query": "<string>",
"replacement": "<string>",
"lookIn": "<ContractFindLookIn>",
"scope": "<ContractFindScope>",
"expectedRevision": 0,
"requestedBackend": "native-desktop"
}

Computes replacements in a workbook subset.

Request

Field TypeScript type Req.
operation "compute_replacements_in_workbook_subset" yes
subsetId string yes
query string yes
replacement string yes
matchCase boolean no
matchEntireCell boolean no
lookIn ContractFindLookIn yes
scope ContractFindScope yes
searchOrder ContractFindSearchOrder no
resultOffset number no
resultLimit number no
requestedBackend ComputeBackendKind | null no

Response on success · compute_replacements_in_workbook_subset

Field TypeScript type Req.
operation "compute_replacements_in_workbook_subset" yes
subsetId string yes
session ContractSubsetSessionInfo yes
scope ContractFindScope yes
lookIn ContractFindLookIn yes
searchOrder ContractFindSearchOrder yes
totalEditCount number yes
resultOffset number yes
returnedEditCount number yes
truncated boolean yes
nextResultOffset number no
index ContractFindIndexStats yes
edits ContractReplaceEdit[] yes

Minimal JSON template

{
"operation": "compute_replacements_in_workbook_subset",
"subsetId": "<subsetId>",
"query": "<string>",
"replacement": "<string>",
"lookIn": "<ContractFindLookIn>",
"scope": "<ContractFindScope>",
"requestedBackend": "native-desktop"
}

Computes totals for a selection.

Request

Field TypeScript type Req.
operation "compute_selection_aggregates" yes
subsetId string yes
ranges CellRange[] yes
aggregateMode "visible_rows" | “all_rows” no
requestGeneration number no
requestedBackend ComputeBackendKind | null no

Response on success · compute_selection_aggregates

Field TypeScript type Req. Note from the contract
operation "compute_selection_aggregates" yes
subsetId string yes
session ContractSubsetSessionInfo yes
aggregateMode "visible_rows" | “all_rows” yes
requestGeneration number no
workbookRevision number yes
calculationGeneration number yes
cacheStatus "hit" | “miss” yes
cacheEntryCount number yes
scannedCellCount number yes
nonEmptyCount number yes How many non-empty cells are in the selection — both text and numbers count. The same as the COUNTA function gives.
numericCount number yes How many cells go into the numeric totals below.
errorCount number yes
formulaCount number yes
numericAggregatesAvailable boolean yes
sum number yes
average number yes
min number yes
max number yes

Minimal JSON template

{
"operation": "compute_selection_aggregates",
"subsetId": "<subsetId>",
"ranges": [],
"requestedBackend": "native-desktop"
}

Converts an entity’s data type in place.

Request

Field TypeScript type Req.
operation "convert_entity_data_type_in_place" yes
subsetId string yes
kind ContractEntityDataTypeKind yes
range CellRange yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · convert_entity_data_type_in_place

Field TypeScript type Req.
operation "convert_entity_data_type_in_place" yes
subsetId string yes
kind ContractEntityDataTypeKind yes
range CellRange yes
originalTexts string[] yes
disposition ContractEntityConversionDisposition yes
didMutate boolean yes
entityCells ContractEntityCellMetadata[] yes
refusal ContractEntityConversionRefusal | null no

Minimal JSON template

{
"operation": "convert_entity_data_type_in_place",
"subsetId": "<subsetId>",
"kind": "<ContractEntityDataTypeKind>",
"range": "<CellRange>",
"requestedBackend": "native-desktop"
}

Copies a range.

Request

Field TypeScript type Req.
operation "copy_range" yes
subsetId string yes
range CellRange yes
requestedBackend ComputeBackendKind | null no

Response on success · copy_range

Field TypeScript type Req.
operation "copy_range" yes
subsetId string yes
session ContractSubsetSessionInfo yes
clipboardId string yes
range CellRange yes
rowCount number yes
colCount number yes
cellCount number yes
mimeTypes string[] yes
mergedRanges CellRange[] no
sourceSelectionExpandedForMerges boolean no
clipboardHtml string | null no
canonicalEdits CellInputEdit[] no

Minimal JSON template

{
"operation": "copy_range",
"subsetId": "<subsetId>",
"range": "<CellRange>",
"requestedBackend": "native-desktop"
}

Request

Field TypeScript type Req.
operation “fill_across_sheets” yes
subsetId string yes
sourceRange CellRange yes
targetSheetKeys string[] yes
mode ContractFillAcrossSheetsMode yes
expectedRevision number | null no
readOnly boolean no
viewport ViewportWindow | null no

Response on success · fill_across_sheets

Field TypeScript type Req.
operation “fill_across_sheets” yes
subsetId string yes
mode ContractFillAcrossSheetsMode yes
sourceRange CellRange yes
targetSheetKeys string[] yes
mutationCount number yes
changedKeys string[] yes
dirty boolean yes
recalcNeeded boolean yes
workbookHistory ContractWorkbookHistoryProjection yes

Minimal JSON template

{
"operation": "fill_across_sheets",
"subsetId": "<subsetId>",
"sourceRange": "<CellRange>",
"targetSheetKeys": "<targetSheetKeys>",
"mode": "<ContractFillAcrossSheetsMode>"
}

Searches within a workbook subset.

Request

Field TypeScript type Req.
operation "find_in_workbook_subset" yes
subsetId string yes
query string yes
matchCase boolean no
matchEntireCell boolean no
lookIn ContractFindLookIn yes
scope ContractFindScope yes
searchOrder ContractFindSearchOrder no
resultOffset number no
resultLimit number no
requestedBackend ComputeBackendKind | null no

Response on success · find_in_workbook_subset

Field TypeScript type Req.
operation "find_in_workbook_subset" yes
subsetId string yes
session ContractSubsetSessionInfo yes
scope ContractFindScope yes
lookIn ContractFindLookIn yes
searchOrder ContractFindSearchOrder yes
totalMatchCount number yes
resultOffset number yes
returnedMatchCount number yes
truncated boolean yes
nextResultOffset number no
index ContractFindIndexStats yes
matches ContractFindMatch[] yes

Minimal JSON template

{
"operation": "find_in_workbook_subset",
"subsetId": "<subsetId>",
"query": "<string>",
"lookIn": "<ContractFindLookIn>",
"scope": "<ContractFindScope>",
"requestedBackend": "native-desktop"
}

Request

Field TypeScript type Req.
operation “flash_fill_pattern” yes
subsetId string yes
mode FlashFillMode yes
generation number yes
examples FlashFillExample[] yes
rows FlashFillTargetRow[] yes
selectedCandidateId string | null no
locale string | null no
refusal FlashFillRefusalContext no
expectedRevision number | null no
viewport ViewportWindow | null no

Response on success · flash_fill_pattern

Field TypeScript type Req.
operation “flash_fill_pattern” yes
subsetId string yes
mode FlashFillMode yes
generation number yes
inference FlashFillInference yes
applied boolean yes
mutationCount number yes
projection ComputeResponsePayload | null no

Minimal JSON template

{
"operation": "flash_fill_pattern",
"subsetId": "<subsetId>",
"mode": "<FlashFillMode>",
"generation": 0,
"examples": [],
"rows": []
}

Marks the used range as changed, within given bounds.

Request

Field TypeScript type Req.
operation "mark_used_range_dirty_bounded" yes
subsetId string yes
sheetKey string yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · mark_used_range_dirty_bounded

Field TypeScript type Req.
operation "mark_used_range_dirty_bounded" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
changedSheet ContractActiveSheetMeta yes
previousUsedRangeDirty boolean yes
usedRangeDirty true yes
activeSheet ContractActiveSheetMeta yes
sheetCount number yes
workbookSheets ContractWorkbookSheetMeta[] yes
geometry ContractGeometrySubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes
layoutMetrics ContractLayoutMetricsSubset | null no
workbookHistory ContractWorkbookHistoryProjection yes
usedRangeDirtyClaim "live_verified" yes
usedRangeDirtyScope "current_session_worksheet_used_range_marker" yes
workbookMutationClaim "no" yes

Minimal JSON template

{
"operation": "mark_used_range_dirty_bounded",
"subsetId": "<subsetId>",
"sheetKey": "<sheetPath>",
"requestedBackend": "native-desktop"
}

Moves a range from the clipboard.

Request

Field TypeScript type Req.
operation "move_clipboard_range" yes
subsetId string yes
clipboardId string yes
target CellRange yes
transpose false no
pasteMode "all" no
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · paste_range

Field TypeScript type Req. Note from the contract
operation "paste_range" yes
subsetId string yes
session ContractSubsetSessionInfo yes
clipboardId string yes
delta DeltaSummary yes
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
layoutMetrics ContractLayoutMetricsSubset no
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes
conditionalFormattingRules ContractConditionalRule[] no
dataValidationMetadata ContractDataValidationMetadata no
workbookHistory ContractWorkbookHistoryProjection yes The history state after the edit is applied: owner, depth, and revision. The shell displays these values as-is.

Minimal JSON template

{
"operation": "move_clipboard_range",
"subsetId": "<subsetId>",
"clipboardId": "<string>",
"target": "<CellRange>",
"requestedBackend": "native-desktop"
}

Pastes a range.

Request

Field TypeScript type Req.
operation "paste_range" yes
subsetId string yes
clipboardId string yes
target CellRange yes
transpose boolean no
pasteMode ContractPasteMode no
expectedRevision number no
readOnly boolean no
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · paste_range

Field TypeScript type Req. Note from the contract
operation "paste_range" yes
subsetId string yes
session ContractSubsetSessionInfo yes
clipboardId string yes
delta DeltaSummary yes
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
layoutMetrics ContractLayoutMetricsSubset no
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes
conditionalFormattingRules ContractConditionalRule[] no
dataValidationMetadata ContractDataValidationMetadata no
workbookHistory ContractWorkbookHistoryProjection yes The history state after the edit is applied: owner, depth, and revision. The shell displays these values as-is.

Minimal JSON template

{
"operation": "paste_range",
"subsetId": "<subsetId>",
"clipboardId": "<string>",
"target": "<CellRange>",
"requestedBackend": "native-desktop"
}

Builds a preview: cell edits.

Request

Field TypeScript type Req.
operation "preview_cell_edits" yes
subsetId string yes
edits CellInputEdit[] yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · preview_cell_edits

Field TypeScript type Req.
operation "preview_cell_edits" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
editedKeys string[] yes
changedKeys string[] yes
dirtyCellCount number yes
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes

Minimal JSON template

{
"operation": "preview_cell_edits",
"subsetId": "<subsetId>",
"edits": [],
"requestedBackend": "native-desktop"
}

Reads cell details.

Request

Field TypeScript type Req.
operation "read_cell_details" yes
subsetId string yes
row number yes
col number yes
viewport ViewportWindow yes
warmSheetForEdit boolean no
requestedBackend ComputeBackendKind | null no

Response on success · read_cell_details

Field TypeScript type Req.
operation "read_cell_details" yes
subsetId string yes
session ContractSubsetSessionInfo yes
cell ContractCellDetails yes

Minimal JSON template

{
"operation": "read_cell_details",
"subsetId": "<subsetId>",
"row": 0,
"col": 0,
"viewport": {
"top": 0,
"left": 0,
"rows": 40,
"cols": 12
},
"requestedBackend": "native-desktop"
}

Redoes the last cell edit.

Request

Field TypeScript type Req.
operation "redo_last_cell_edit" yes
subsetId string yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · redo_last_cell_edit

Field TypeScript type Req.
operation "redo_last_cell_edit" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
workbookHistory ContractWorkbookHistoryProjection yes
redoneKey string yes
changedKeys string[] yes
dirtyCellCount number yes
conditionalFormattingRules ContractConditionalRule[] no
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes

Minimal JSON template

{
"operation": "redo_last_cell_edit",
"subsetId": "<subsetId>",
"requestedBackend": "native-desktop"
}

Redoes the last range edit.

Request

Field TypeScript type Req.
operation "redo_last_range_edit" yes
subsetId string yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · redo_last_range_edit

Field TypeScript type Req.
operation "redo_last_range_edit" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
workbookHistory ContractWorkbookHistoryProjection yes
redoneRange CellRange yes
redoneKeys string[] yes
changedKeys string[] yes
dirtyCellCount number yes
sheetProtected boolean yes
conditionalFormattingRules ContractConditionalRule[] no
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
layoutMetrics ContractLayoutMetricsSubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes
dataValidationMetadata ContractDataValidationMetadata yes
tableName string | null no
tableRef string | null no
tableDataBodyRef string | null no
tableMetadata ContractTableMetadataProjection | null no
workbookTableMetadata ContractTableMetadataProjection | null no
worksheetAutoFilterMetadata ContractWorksheetAutoFilterMetadata | null no
hiddenRows number[] yes
manualHiddenRows number[] yes
filterHiddenRows number[] yes
rangeFilterHistoryReplay boolean yes

Minimal JSON template

{
"operation": "redo_last_range_edit",
"subsetId": "<subsetId>",
"requestedBackend": "native-desktop"
}

Request

Field TypeScript type Req.
operation “resolve_current_region” yes
subsetId string yes
sheetKey string yes
row number yes
col number yes

Response on success · resolve_current_region

Field TypeScript type Req.
operation “resolve_current_region” yes
subsetId string yes
sheetKey string yes
fromRow number yes
fromCol number yes
rowStart number yes
colStart number yes
rowEnd number yes
colEnd number yes

Minimal JSON template

{
"operation": "resolve_current_region",
"subsetId": "<subsetId>",
"sheetKey": "<sheetKey>",
"row": 0,
"col": 0
}

Request

Field TypeScript type Req.
operation “resolve_navigation_edge” yes
subsetId string yes
sheetKey string yes
row number yes
col number yes
direction ContractNavigationEdgeDirection yes

Response on success · resolve_navigation_edge

Field TypeScript type Req.
operation “resolve_navigation_edge” yes
subsetId string yes
sheetKey string yes
fromRow number yes
fromCol number yes
direction ContractNavigationEdgeDirection yes
row number yes
col number yes
hitSheetBoundary boolean yes

Minimal JSON template

{
"operation": "resolve_navigation_edge",
"subsetId": "<subsetId>",
"sheetKey": "<sheetKey>",
"row": 0,
"col": 0,
"direction": "<ContractNavigationEdgeDirection>"
}

Sorts the rows of a range.

Request

Field TypeScript type Req.
operation "sort_range_rows" yes
subsetId string yes
range CellRange yes
levels SortRangeRowsLevel[] yes
control "apply" | “prepare” | “commit” | “cancel” no
requestGeneration number | null no
expectedRevision number | null no
visibleRowsOnly boolean no
locale string | null no
caseSensitive boolean no
numericTextMode SortRangeRowsNumericTextMode no
requestedBackend ComputeBackendKind | null no

Response on success · sort_range_rows

Field TypeScript type Req.
operation "sort_range_rows" yes
subsetId string yes
control "apply" | “prepare” | “commit” | “cancel” yes
requestGeneration number | null no
delta DeltaSummary yes
movedRowCount number yes
sortedRowCount number yes
rowMoves SortRangeRowsRowMove[] yes

Minimal JSON template

{
"operation": "sort_range_rows",
"subsetId": "<subsetId>",
"range": "<CellRange>",
"levels": [],
"requestedBackend": "native-desktop"
}

Undoes the last cell edit.

Request

Field TypeScript type Req.
operation "undo_last_cell_edit" yes
subsetId string yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · undo_last_cell_edit

Field TypeScript type Req.
operation "undo_last_cell_edit" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
workbookHistory ContractWorkbookHistoryProjection yes
restoredKey string yes
changedKeys string[] yes
dirtyCellCount number yes
conditionalFormattingRules ContractConditionalRule[] no
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes

Minimal JSON template

{
"operation": "undo_last_cell_edit",
"subsetId": "<subsetId>",
"requestedBackend": "native-desktop"
}

Undoes the last range edit.

Request

Field TypeScript type Req.
operation "undo_last_range_edit" yes
subsetId string yes
viewport ViewportWindow | null no
requestedBackend ComputeBackendKind | null no

Response on success · undo_last_range_edit

Field TypeScript type Req.
operation "undo_last_range_edit" yes
subsetId string yes
session ContractSubsetSessionInfo yes
supportedSubset string yes
delta DeltaSummary yes
workbookHistory ContractWorkbookHistoryProjection yes
restoredRange CellRange yes
restoredKeys string[] yes
changedKeys string[] yes
dirtyCellCount number yes
sheetProtected boolean yes
conditionalFormattingRules ContractConditionalRule[] no
currentSourceSaveReadiness ContractCurrentSourceSaveReadiness | null no
activeSheet ContractActiveSheetMeta yes
geometry ContractGeometrySubset yes
layoutMetrics ContractLayoutMetricsSubset yes
recalcNeeded boolean yes
viewport ViewportWindow yes
previewCells ContractPreviewCell[] yes
dataValidationMetadata ContractDataValidationMetadata yes
tableName string | null no
tableRef string | null no
tableDataBodyRef string | null no
tableMetadata ContractTableMetadataProjection | null no
workbookTableMetadata ContractTableMetadataProjection | null no
worksheetAutoFilterMetadata ContractWorksheetAutoFilterMetadata | null no
hiddenRows number[] yes
manualHiddenRows number[] yes
filterHiddenRows number[] yes
rangeFilterHistoryReplay boolean yes

Minimal JSON template

{
"operation": "undo_last_range_edit",
"subsetId": "<subsetId>",
"requestedBackend": "native-desktop"
}

Documentation assistant

Answers are assembled from the documentation and may be inaccurate — check the sources.