Skip to main content
Glama

sheets_batch_update_values

Update multiple ranges in a Google Sheets spreadsheet with new values in one request. Specify spreadsheet ID, range-value pairs, and input interpretation (RAW or USER_ENTERED).

Instructions

Update values in multiple ranges of a Google Sheets spreadsheet

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesArray of range-value pairs to update
spreadsheetIdYesThe ID of the spreadsheet (found in the URL after /d/)
valueInputOptionNoHow the input data should be interpreted (default: USER_ENTERED)

Implementation Reference

  • The main handler function that validates the input, calls the Google Sheets API to batch update values across multiple ranges, computes the total updated cells, and returns a formatted response.
    export async function handleBatchUpdateValues(input: any) { try { const validatedInput = validateBatchUpdateValuesInput(input); const sheets = await getAuthenticatedClient(); const response = await sheets.spreadsheets.values.batchUpdate({ spreadsheetId: validatedInput.spreadsheetId, requestBody: { valueInputOption: validatedInput.valueInputOption, data: validatedInput.data.map((item) => ({ range: item.range, values: item.values, })), }, }); const totalUpdatedCells = response.data.responses ? response.data.responses.reduce( (sum: number, resp: any) => sum + (resp.updatedCells || 0), 0 ) : 0; return formatUpdateResponse(totalUpdatedCells); } catch (error) { return handleError(error); } }
  • The Tool object defining the name, description, and input schema for validating parameters like spreadsheetId, data (array of range-value pairs), and optional valueInputOption.
    export const batchUpdateValuesTool: Tool = { name: 'sheets_batch_update_values', description: 'Update values in multiple ranges of a Google Sheets spreadsheet', inputSchema: { type: 'object', properties: { spreadsheetId: { type: 'string', description: 'The ID of the spreadsheet (found in the URL after /d/)', }, data: { type: 'array', items: { type: 'object', properties: { range: { type: 'string', description: 'The A1 notation range to update', }, values: { type: 'array', items: { type: 'array', }, description: 'A 2D array of values for this range', }, }, required: ['range', 'values'], }, description: 'Array of range-value pairs to update', }, valueInputOption: { type: 'string', enum: ['RAW', 'USER_ENTERED'], description: 'How the input data should be interpreted (default: USER_ENTERED)', }, }, required: ['spreadsheetId', 'data'], }, };
  • src/index.ts:32-64 (registration)
    Registration of tool handlers in a Map, mapping 'sheets_batch_update_values' to its handleBatchUpdateValues function.
    const toolHandlers = new Map<string, (input: any) => Promise<any>>([ ['sheets_check_access', tools.handleCheckAccess], ['sheets_get_values', tools.handleGetValues], ['sheets_batch_get_values', tools.handleBatchGetValues], ['sheets_get_metadata', tools.handleGetMetadata], ['sheets_update_values', tools.handleUpdateValues], ['sheets_batch_update_values', tools.handleBatchUpdateValues], ['sheets_append_values', tools.handleAppendValues], ['sheets_clear_values', tools.handleClearValues], ['sheets_create_spreadsheet', tools.handleCreateSpreadsheet], ['sheets_insert_sheet', tools.handleInsertSheet], ['sheets_delete_sheet', tools.handleDeleteSheet], ['sheets_duplicate_sheet', tools.handleDuplicateSheet], ['sheets_copy_to', tools.handleCopyTo], ['sheets_update_sheet_properties', tools.handleUpdateSheetProperties], ['sheets_format_cells', tools.formatCellsHandler], ['sheets_update_borders', tools.updateBordersHandler], ['sheets_merge_cells', tools.mergeCellsHandler], ['sheets_unmerge_cells', tools.unmergeCellsHandler], ['sheets_add_conditional_formatting', tools.addConditionalFormattingHandler], // Batch operations ['sheets_batch_delete_sheets', tools.handleBatchDeleteSheets], ['sheets_batch_format_cells', tools.handleBatchFormatCells], // Chart operations ['sheets_create_chart', tools.handleCreateChart], ['sheets_update_chart', tools.handleUpdateChart], ['sheets_delete_chart', tools.handleDeleteChart], // Link and date operations ['sheets_insert_link', tools.handleInsertLink], ['sheets_insert_date', tools.handleInsertDate], // Row operations ['sheets_insert_rows', tools.handleInsertRows], ]);
  • src/index.ts:67-99 (registration)
    Registration of all tool objects including batchUpdateValuesTool for the listTools request handler.
    const allTools = [ tools.checkAccessTool, tools.getValuesTool, tools.batchGetValuesTool, tools.getMetadataTool, tools.updateValuesTool, tools.batchUpdateValuesTool, tools.appendValuesTool, tools.clearValuesTool, tools.createSpreadsheetTool, tools.insertSheetTool, tools.deleteSheetTool, tools.duplicateSheetTool, tools.copyToTool, tools.updateSheetPropertiesTool, tools.formatCellsTool, tools.updateBordersTool, tools.mergeCellsTool, tools.unmergeCellsTool, tools.addConditionalFormattingTool, // Batch operations tools.batchDeleteSheetsTool, tools.batchFormatCellsTool, // Chart operations tools.createChartTool, tools.updateChartTool, tools.deleteChartTool, // Link and date operations tools.insertLinkTool, tools.insertDateTool, // Row operations tools.insertRowsTool, ];
  • src/tools/index.ts:7-7 (registration)
    Re-export of the batch-update-values tool and handler from its module.
    export * from './batch-update-values.js';

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/freema/mcp-gsheets'

If you have feedback or need assistance with the MCP directory API, please join our Discord server