Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📈 GA4 Reports — Factory Method

Generador de reportes de Google Analytics 4 (Data API v1beta) que exporta métricas diarias a CSV. Usa el patrón de diseño Factory Method para construir distintos tipos de reporte, y una arquitectura por capas (domain · usecase · view · infrastructure) que aísla la lógica de la API de Google.

CI Python GA4 License


🏭 Patrón Factory Method

Cada tipo de reporte es un "producto" que sabe construir su propia query; la factory resuelve la clase concreta a partir de un identificador:

report = GA4ReportFactory.create_report("activeUserspPerDay", "2023-07-01", "2023-07-01")

Tipos registrados:

report_type Dimensiones Métricas
activeUserspPerDay date activeUsers
users date totalUsers, newUsers
page_views date, pagePath screenPageViews

Agregar un reporte nuevo = crear una clase GA4Report y registrarla en la factory.


🧱 Arquitectura

src/
├── domain/
│   ├── ga4_report_domain.py       # Factory Method + productos (GA4Report)
│   └── ga4_report_exceptions.py   # GA4Exception (error de dominio)
├── usecase/
│   └── ga4_report_generate_usecase.py  # Arma la query y transforma la respuesta
├── view/
│   ├── ga4_report_controller.py   # Coordina el caso de uso
│   └── ga4_report_dto.py          # GA4ReportDTO (especificación del reporte)
└── infraestructure/
    └── ga4_report_conection.py    # Cliente de la GA4 Data API (service account)
main.py                            # Recorre fechas y exporta los reportes a CSV

🚀 Uso

1. Instala dependencias

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

2. Configura el acceso

cp .env.example .env
# edita .env:
#   SERVICE_ACCOUNT_FILE = ruta al JSON del service account (con acceso a GA4)
#   GA4_PROPERTY_ID      = id de tu propiedad GA4

El service account necesita el scope analytics.readonly y estar añadido como usuario de la propiedad de GA4.

3. Ejecuta

python main.py

Ajusta START_DATE, END_DATE y REPORT_TYPES en main.py. Los CSV se guardan en backup/report_<fecha>/<tipo>/.


🧪 Tests

pip install pytest
pytest

Cubren la factory (cada tipo construye la query correcta y los tipos inválidos fallan) y el caso de uso (transformación de la respuesta de GA4 con una conexión simulada), sin necesidad de credenciales ni de red. Corren en GitHub Actions.


🔐 Seguridad

.env y el JSON del service account están en .gitignore (sólo se versiona .env.example). El entorno virtual y la salida backup/ tampoco se versionan.


🛠️ Stack

Python 3.11 · google-analytics-data · pandas · python-dotenv


📄 Licencia

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages