Mirra
IntegrationsGoogle

Google Sheets

SDK reference for google sheets operations

Overview

Google Sheets spreadsheet management and data manipulation

  • Category: productivity
  • Auth Required: Yes
  • Supported Modes: standard, delegated

Operations

createSpreadsheet

Create a new Google Sheets spreadsheet

Arguments:

  • title (string, required): Title of the spreadsheet

Returns:

AdapterOperationResult - Created spreadsheet with ID, title, and URL

Response Fields:

FieldTypeDescription
spreadsheetIdstringCreated spreadsheet ID
titlestringSpreadsheet title
urlstringURL to open spreadsheet in browser

Example:

const result = await mirra.googleSheets.createSpreadsheet({
  title: "example"
});

readRange

Read data from a range in a spreadsheet

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • range (string, required): Cell range (e.g., "Sheet1!A1:B10")

Returns:

AdapterOperationResult - Normalized range data with values, dimensions, and isEmpty flag

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
rangestringRange that was read
valuesany[][]2D array of cell values
rowCountnumberNumber of rows returned
columnCountnumberNumber of columns in widest row
isEmptybooleanWhether the range is empty

Example:

const result = await mirra.googleSheets.readRange({
  spreadsheetId: "abc123",
  range: "example"
});

writeRange

Write data to a range in a spreadsheet

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • range (string, required): Cell range (e.g., "Sheet1!A1:B10")
  • values (array, required): Data to write (2D array)

Returns:

AdapterOperationResult - Normalized write result with update counts

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
updatedRangestringRange that was updated
updatedRowsnumberNumber of rows updated
updatedColumnsnumberNumber of columns updated
updatedCellsnumberTotal cells updated

Example:

const result = await mirra.googleSheets.writeRange({
  spreadsheetId: "abc123",
  range: "example",
  values: []
});

appendRow

Append a row to a spreadsheet

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sheetName (string, required): Name of the sheet
  • values (array, required): Row values to append

Returns:

AdapterOperationResult - Append operation result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
sheetNamestringSheet name
appendedRangestringRange where data was appended
appendedRowsnumberNumber of rows appended
appendedCellsnumberTotal cells appended
valuesany[]Values that were appended

Example:

const result = await mirra.googleSheets.appendRow({
  spreadsheetId: "abc123",
  sheetName: "example",
  values: []
});

getSpreadsheet

Get spreadsheet metadata and properties

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet

Returns:

AdapterOperationResult - Normalized spreadsheet metadata with sheets array

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
titlestringSpreadsheet title
urlstringURL to open spreadsheet
localestringSpreadsheet locale (e.g., en_US)
timeZonestringSpreadsheet timezone
sheetsGoogleSheetsSheetInfo[]List of sheets in the spreadsheet
sheets item fields (GoogleSheetsSheetInfo)
FieldTypeDescription
sheetIdnumberNumeric sheet ID
titlestringSheet tab name
indexnumberSheet index (0-based)
rowCountnumberTotal rows in sheet
columnCountnumberTotal columns in sheet
isHiddenbooleanWhether sheet is hidden

| namedRanges | GoogleSheetsNamedRange[] | List of named ranges |

namedRanges item fields (GoogleSheetsNamedRange)
FieldTypeDescription
namestringNamed range identifier
rangestringRange in A1 notation
sheetIdnumberSheet ID containing the range (optional)

Example:

const result = await mirra.googleSheets.getSpreadsheet({
  spreadsheetId: "abc123"
});

insertAtCell

Insert a value at a specific cell with optional formatting

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • cell (string, required): Cell reference in format SheetName!A1
  • value (string, required): Value to insert
  • bold (boolean, optional): Make text bold
  • italic (boolean, optional): Make text italic
  • foregroundColor (string, optional): Text color (hex or named color)
  • backgroundColor (string, optional): Cell background color (hex or named color)

Returns:

AdapterOperationResult - Insert operation result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
cellstringCell reference (e.g., Sheet1!A1)
valueanyValue that was inserted
previousValueanyPrevious cell value if any (optional)
formattedbooleanWhether formatting was applied

Example:

const result = await mirra.googleSheets.insertAtCell({
  spreadsheetId: "abc123",
  cell: "example",
  value: "example"
});

insertFormula

Insert a formula at a specific cell

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • cell (string, required): Cell reference in format SheetName!A1
  • formula (string, required): Formula to insert (with or without leading =)
  • note (string, optional): Optional note to add to the cell

Returns:

AdapterOperationResult - Formula insertion result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
cellstringCell reference
formulastringFormula that was inserted

Example:

const result = await mirra.googleSheets.insertFormula({
  spreadsheetId: "abc123",
  cell: "example",
  formula: "example"
});

formatRange

Apply formatting to a range of cells

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • range (string, required): Range in format SheetName!A1:B10
  • bold (boolean, optional): Make text bold
  • italic (boolean, optional): Make text italic
  • foregroundColor (string, optional): Text color (hex or named color)
  • backgroundColor (string, optional): Cell background color (hex or named color)
  • borders (boolean, optional): Add borders to cells

Returns:

AdapterOperationResult - Formatting result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
rangestringRange that was formatted
formattingAppliedstring[]List of formatting options applied

Example:

const result = await mirra.googleSheets.formatRange({
  spreadsheetId: "abc123",
  range: "example"
});

createChart

Create a chart from spreadsheet data

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sheetId (number, required): ID of the sheet containing data
  • dataRange (string, required): Data range for the chart (e.g., A1:B10)
  • chartType (string, required): Chart type: BAR, LINE, AREA, PIE, or SCATTER
  • title (string, required): Chart title
  • position (object, required): Chart position with row, column, rowCount, columnCount

Returns:

AdapterOperationResult - Chart creation result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
chartTypestringType of chart created
titlestringChart title
dataRangestringData range used for chart
positionRownumberRow where chart is anchored
positionColumnstringColumn where chart is anchored

Example:

const result = await mirra.googleSheets.createChart({
  spreadsheetId: "abc123",
  sheetId: 10,
  dataRange: "example",
  chartType: "example",
  title: "example",
  position: {}
});

findAndReplace

Find and replace text in a spreadsheet

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • findText (string, required): Text to find
  • replaceText (string, required): Text to replace with
  • sheetName (string, optional): Limit search to specific sheet
  • matchCase (boolean, optional): Case-sensitive search
  • matchEntireCell (boolean, optional): Match entire cell content only

Returns:

AdapterOperationResult - Find and replace result with count of replacements

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
findTextstringText that was searched for
replaceTextstringReplacement text
occurrencesReplacednumberNumber of replacements made
sheetNamestringSheet searched (null for all) (optional)
matchCasebooleanWhether search was case-sensitive
matchEntireCellbooleanWhether entire cell match required

Example:

const result = await mirra.googleSheets.findAndReplace({
  spreadsheetId: "abc123",
  findText: "example",
  replaceText: "example"
});

insertMultipleRows

Insert multiple rows of data at once

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sheetName (string, required): Name of the sheet
  • rowsData (array, required): 2D array of row data to insert
  • startingRow (number, optional): Row number to start insertion (1-indexed). If not provided, appends to end
  • formattingOptions (object, optional): Optional formatting to apply (bold, italic, foregroundColor, backgroundColor, borders)

Returns:

AdapterOperationResult - Multiple row insertion result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
sheetNamestringSheet name
rowsInsertednumberNumber of rows inserted
cellsInsertednumberTotal cells inserted
startingRownumberStarting row (null if appended) (optional)
formattedbooleanWhether formatting was applied

Example:

const result = await mirra.googleSheets.insertMultipleRows({
  spreadsheetId: "abc123",
  sheetName: "example",
  rowsData: []
});

clearRange

Clear content from a range of cells

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sheetName (string, required): Name of the sheet
  • range (string, required): Range to clear (e.g., A1:B10)

Returns:

AdapterOperationResult - Clear operation result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
rangestringRange that was cleared
cellsClearednumberNumber of cells cleared

Example:

const result = await mirra.googleSheets.clearRange({
  spreadsheetId: "abc123",
  sheetName: "example",
  range: "example"
});

insertRows

Insert empty rows at a specific position in a sheet. IMPORTANT: Requires numeric sheetId (get from getSpreadsheet), not sheet name. Row indices are 0-indexed (row 1 in UI = index 0).

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sheetId (number, required): Numeric sheet ID (get from getSpreadsheet response: sheets[0].properties.sheetId). This is NOT the sheet name.
  • startRowIndex (number, required): Row index to start inserting at (0-indexed). To insert before row 5 in the UI, use index 4.
  • numRows (number, required): Number of rows to insert

Returns:

AdapterOperationResult - Insert rows result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
sheetIdnumberNumeric sheet ID
operationstringOperation type (insert)
startRowIndexnumberRow index where insertion started (0-indexed)
numRowsnumberNumber of rows inserted

Example:

const result = await mirra.googleSheets.insertRows({
  spreadsheetId: "abc123",
  sheetId: 10,
  startRowIndex: 10,
  numRows: 10
});

deleteRows

Delete rows from a sheet. IMPORTANT: Requires numeric sheetId (get from getSpreadsheet), not sheet name. Row indices are 0-indexed (row 1 in UI = index 0).

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sheetId (number, required): Numeric sheet ID (get from getSpreadsheet response: sheets[0].properties.sheetId). This is NOT the sheet name.
  • startRowIndex (number, required): Row index to start deleting from (0-indexed). To delete row 5 in the UI, use index 4.
  • numRows (number, required): Number of rows to delete

Returns:

AdapterOperationResult - Delete rows result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
sheetIdnumberNumeric sheet ID
operationstringOperation type (delete)
startRowIndexnumberRow index where deletion started (0-indexed)
numRowsnumberNumber of rows deleted

Example:

const result = await mirra.googleSheets.deleteRows({
  spreadsheetId: "abc123",
  sheetId: 10,
  startRowIndex: 10,
  numRows: 10
});

insertColumns

Insert empty columns at a specific position in a sheet. IMPORTANT: Requires numeric sheetId (get from getSpreadsheet), not sheet name. Column indices are 0-indexed (A=0, B=1, C=2, etc.).

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sheetId (number, required): Numeric sheet ID (get from getSpreadsheet response: sheets[0].properties.sheetId). This is NOT the sheet name.
  • startColumnIndex (number, required): Column index to start inserting at (0-indexed: A=0, B=1, C=2, D=3, etc.). To insert before column D, use index 3.
  • numColumns (number, required): Number of columns to insert

Returns:

AdapterOperationResult - Insert columns result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
sheetIdnumberNumeric sheet ID
operationstringOperation type (insert)
startColumnIndexnumberColumn index where insertion started (0-indexed)
startColumnLetterstringColumn letter where insertion started
numColumnsnumberNumber of columns inserted

Example:

const result = await mirra.googleSheets.insertColumns({
  spreadsheetId: "abc123",
  sheetId: 10,
  startColumnIndex: 10,
  numColumns: 10
});

deleteColumns

Delete columns from a sheet. IMPORTANT: Requires numeric sheetId (get from getSpreadsheet), not sheet name. Column indices are 0-indexed (A=0, B=1, C=2, etc.).

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sheetId (number, required): Numeric sheet ID (get from getSpreadsheet response: sheets[0].properties.sheetId). This is NOT the sheet name.
  • startColumnIndex (number, required): Column index to start deleting from (0-indexed: A=0, B=1, C=2, D=3, etc.). To delete column D, use index 3.
  • numColumns (number, required): Number of columns to delete

Returns:

AdapterOperationResult - Delete columns result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
sheetIdnumberNumeric sheet ID
operationstringOperation type (delete)
startColumnIndexnumberColumn index where deletion started (0-indexed)
startColumnLetterstringColumn letter where deletion started
numColumnsnumberNumber of columns deleted

Example:

const result = await mirra.googleSheets.deleteColumns({
  spreadsheetId: "abc123",
  sheetId: 10,
  startColumnIndex: 10,
  numColumns: 10
});

copyRange

Copy data from one range to another location within the same spreadsheet. IMPORTANT: Requires numeric sheetIds (get from getSpreadsheet), not sheet names. Can copy within same sheet or across sheets.

Arguments:

  • spreadsheetId (string, required): ID of the spreadsheet
  • sourceSheetId (number, required): Numeric sheet ID of the source sheet (get from getSpreadsheet response: sheets[n].properties.sheetId)
  • sourceRange (string, required): Source range in A1 notation WITHOUT sheet name (e.g., "A1:C5", not "Sheet1!A1:C5")
  • targetSheetId (number, required): Numeric sheet ID of the target sheet (can be same as sourceSheetId to copy within same sheet)
  • targetStartCell (string, required): Target start cell in A1 notation (e.g., "E1"). The copied data will fill cells starting from this position.

Returns:

AdapterOperationResult - Copy range result

Response Fields:

FieldTypeDescription
spreadsheetIdstringSpreadsheet ID
sourceSheetIdnumberSource sheet ID
sourceRangestringSource range in A1 notation
targetSheetIdnumberTarget sheet ID
targetStartCellstringTarget start cell

Example:

const result = await mirra.googleSheets.copyRange({
  spreadsheetId: "abc123",
  sourceSheetId: 10,
  sourceRange: "example",
  targetSheetId: 10,
  targetStartCell: "example"
});

On this page