sheets_update_values
Modify and update specific ranges of data in Google Sheets by providing a spreadsheet ID, A1 notation range, and new values in a 2D array.
Instructions
Update values in a Google Sheet range
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 notation range | |
| spreadsheet_id | Yes | ID of the spreadsheet | |
| values | Yes | 2D array of values |
Implementation Reference
- src/mcp_google_suite/server.py:388-404 (handler)MCP tool handler for sheets_update_values: validates arguments and calls SheetsService.update_valuesasync def _handle_sheets_update_values( self, context: GoogleWorkspaceContext, arguments: dict ) -> Dict[str, Any]: """Handle sheets update values requests.""" spreadsheet_id = arguments.get("spreadsheet_id") range_name = arguments.get("range") values = arguments.get("values") if not spreadsheet_id or not range_name or values is None: raise ValueError("spreadsheet_id, range, and values are required") logger.debug(f"Updating sheet values - ID: {spreadsheet_id}, Range: {range_name}") result = await context.sheets.update_values( spreadsheet_id=spreadsheet_id, range_name=range_name, values=values ) logger.debug(f"Sheet values updated - Updated cells: {result.get('updatedCells', 0)}") return result
- Input schema and tool definition for sheets_update_valuestypes.Tool( name="sheets_update_values", description="Update values in a Google Sheet range", inputSchema={ "type": "object", "properties": { "spreadsheet_id": { "type": "string", "description": "ID of the spreadsheet", }, "range": {"type": "string", "description": "A1 notation range"}, "values": { "type": "array", "items": {"type": "array", "items": {"type": "string"}}, "description": "2D array of values", }, }, "required": ["spreadsheet_id", "range", "values"], }, ),
- src/mcp_google_suite/server.py:176-182 (registration)Dynamic registration of all tool handlers, including sheets_update_values, into the tool registry# Register tool handlers for tool in self._get_tools_list(): handler_name = f"_handle_{tool.name}" if hasattr(self, handler_name): handler = getattr(self, handler_name) self._tool_registry[tool.name] = handler logger.debug(f"Registered handler for {tool.name}")
- Core implementation of updating values in Google Sheets using the APIdef update_values( self, spreadsheet_id: str, range_name: str, values: List[List[Any]], major_dimension: str = "ROWS", ) -> Dict[str, Any]: """Update values in a specific range of a spreadsheet.""" try: body = {"values": values, "majorDimension": major_dimension} result = ( self.service.spreadsheets() .values() .update( spreadsheetId=spreadsheet_id, range=range_name, valueInputOption="USER_ENTERED", body=body, ) .execute() ) return {"success": True, "result": result} except HttpError as error: return {"success": False, **self.handle_error(error)}