Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
Binary file removed .DS_Store
Binary file not shown.
31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: CI

on:
push:
branches: ["**"]
pull_request:

jobs:
test:
name: Compile + Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip

- name: Install test tooling
run: |
python -m pip install --upgrade pip
pip install pytest

- name: Syntax check (compile all sources)
run: python -m compileall -q src main.py

- name: Run unit tests
run: pytest
30 changes: 30 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Entornos virtuales (¡estaban commiteados!)
bin/
lib/
include/
share/
pyvenv.cfg
venv/
.venv/
env/

# Credenciales reales de Google (usa credentials.example.json como plantilla)
src/controller/credentials.json
*credentials*.json
!*credentials.example.json

# Salida de reportes generados
backup/

# Cachés de Python
__pycache__/
*.py[cod]

# macOS / editores
.DS_Store
.idea/
.vscode/

# Archivos generados
*.xlsx
*.csv
141 changes: 86 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,96 @@
Proyecto de Extracción de Datos de Google Analytics
Este proyecto tiene como objetivo la extracción de datos de Google Analytics utilizando Python y la biblioteca Google Analytics Client. Permite a los usuarios obtener informes personalizados y exportarlos para su análisis.

Requisitos
Antes de comenzar, asegúrate de tener instalados los siguientes requisitos:

Python 3.x
Credenciales de Google Analytics en un archivo JSON.
Paquetes de Python requeridos. Puedes instalarlos usando pip:
pip install pandas
pip install google-auth
pip install google-auth-oauthlib
pip install google-auth-httplib2
Configuración
Clona el repositorio de Git en tu máquina:
Coloca tus credenciales de Google Analytics en un archivo JSON y especifica la ruta en credentials_path en el archivo main.py.
python

credentials_path = '/ruta/a/tu/credentials.json'
Define las métricas y dimensiones que deseas extraer en un objeto AnalyticsReport. Personaliza este objeto según tus necesidades:
python
report = AnalyticsReport(
group='analytics',
type='report',
name='reportexd',
view_id='216016069',
start_date='2022-01-01',
end_date='2022-12-31',
metrics=[
{'expression': 'ga:newUsers'},
{'expression': 'ga:sessions'},
# ... Agrega más métricas aquí ...
],
dimensions=[
{'name': 'ga:operatingSystem'},
{'name': 'ga:year'},
# ... Agrega más dimensiones aquí ...
]
)
Especifica la carpeta de respaldo donde se guardarán los informes exportados:
python
backup_folder = '/ruta/a/tu/carpeta-de-respaldo'
Uso
Para ejecutar la extracción de datos desde Google Analytics, ejecuta el siguiente comando:
# 📊 Universal Analytics Extractor

Herramienta en **Python** para extraer reportes de **Universal Analytics**
(Google Analytics Reporting API v4) y exportarlos a **CSV/Excel**. Organizada en
capas (**domain · usecases · controller · infrastructure · view**) para mantener
la lógica de negocio separada del cliente de Google y de la presentación.

![CI](https://github.com/AlejandroVegaFullstackDev/UAnalyticsExtractInfo/actions/workflows/ci.yml/badge.svg)
![Python](https://img.shields.io/badge/python-3.12-blue)
![Google Analytics](https://img.shields.io/badge/Analytics-Reporting%20v4-E37400)
![License](https://img.shields.io/badge/license-MIT-green)

> ⚠️ Universal Analytics fue descontinuado por Google en 2024. Este proyecto
> sirve como referencia de integración con la Reporting API v4 y de exportación
> de datos analíticos.

---

## 🧱 Arquitectura

```
src/
├── domain/models.py # AnalyticsReport (entidad de configuración del reporte)
├── usecases/analytics_usecase.py # Orquesta la obtención del reporte
├── controller/analytics_controller.py # Coordina fetch + exportación a CSV/Excel
├── infrastructure/
│ └── google_analytics_client.py # Cliente de la Reporting API v4 (service account)
└── view/console_view.py # Salida por consola
main.py # Punto de entrada (configura y ejecuta un reporte)
scripts/ # Utilidades sueltas (combinar CSVs, reestructurar carpetas)
```

---

## 🚀 Uso

### 1. Instala dependencias

```bash
python -m venv venv && source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
```

### 2. Configura las credenciales

Crea un **service account** en Google Cloud con acceso a la Reporting API y dale
permiso de lectura sobre la vista de Analytics. Luego:

```bash
cp src/controller/credentials.example.json src/controller/credentials.json
# pega el JSON real de tu service account en credentials.json (está en .gitignore)
```

### 3. Define el reporte y ejecuta

Ajusta `VIEW_ID`, fechas, métricas y dimensiones en `build_report()` dentro de
`main.py`, y corre:

```bash
python main.py
Esto ejecutará el proyecto y guardará el informe en la carpeta de respaldo que especificaste.
```

El reporte se exporta a `backup/<group>/<type>/<name>.csv`.

---

## 🧪 Tests

```bash
pip install pytest
pytest
```

Cubren la entidad `AnalyticsReport` y el caso de uso (con cliente simulado), sin
necesidad de credenciales ni de red. Corren en **GitHub Actions**.

---

Visualización de Datos
Este proyecto incluye una vista de consola para mostrar mensajes de éxito. Puedes personalizar y extender esta vista según tus necesidades en el archivo console_view.py.
## 🔐 Seguridad

python
console_view = ConsoleView()
console_view.display_success()
Contribuciones
Si deseas contribuir a este proyecto, siéntete libre de crear un Pull Request. Asegúrate de seguir las pautas de contribución.
Las credenciales reales (`src/controller/credentials.json`) están en `.gitignore`.
Sólo se versiona la plantilla `credentials.example.json`. El entorno virtual y los
reportes generados (`backup/`) tampoco se versionan.

Licencia
Este proyecto se distribuye bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
---

¡Esperamos que este proyecto sea útil para tus necesidades de extracción de datos de Google Analytics! Si tienes alguna pregunta o inquietud, no dudes en contactarnos.
## 🛠️ Stack

`Python 3.12` · `google-api-python-client` · `google-auth` · `pandas` ·
`openpyxl` · `pyfiglet`

---

## 📄 Licencia

MIT
Binary file removed backup/.DS_Store
Binary file not shown.
Loading
Loading