https://github.com/miguelapp10/correo_masivo_python
Este script automatiza el proceso de descarga de reportes diarios desde Google Drive, procesamiento de datos desde archivos Excel, generación de reportes resumen y envío de estos reportes por correo electrónico a las tiendas correspondientes
https://github.com/miguelapp10/correo_masivo_python
python sheets-api stmp
Last synced: 1 day ago
JSON representation
Este script automatiza el proceso de descarga de reportes diarios desde Google Drive, procesamiento de datos desde archivos Excel, generación de reportes resumen y envío de estos reportes por correo electrónico a las tiendas correspondientes
- Host: GitHub
- URL: https://github.com/miguelapp10/correo_masivo_python
- Owner: Miguelapp10
- Created: 2024-06-12T14:41:16.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-21T20:02:45.000Z (about 1 year ago)
- Last Synced: 2025-07-12T01:02:27.319Z (10 months ago)
- Topics: python, sheets-api, stmp
- Language: Python
- Homepage: https://www.linkedin.com/in/miguelpazosp/
- Size: 35.2 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Automatización de Reportes Diarios y Distribución de Correos Electrónicos
## Descripción General
Este script automatiza el proceso de descarga de reportes diarios desde Google Drive, procesamiento de datos desde archivos Excel, generación de reportes resumen y envío de estos reportes por correo electrónico a las tiendas correspondientes. Realiza tres tareas principales:
1. **Descargar Archivos desde Google Drive**
2. **Procesar Archivos Excel**
3. **Enviar Reportes Resumen por Correo Electrónico**
## Requisitos Previos
- Python 3.6 o superior
- Bibliotecas de Python requeridas:
- `pandas`
- `xlsxwriter`
- `fpdf`
- `google-auth`
- `google-auth-oauthlib`
- `google-auth-httplib2`
- `google-api-python-client`
- `smtplib`
- `email`
- `numpy`
- `glob`
- `warnings`
- `xlsx2csv`
## Instrucciones de Configuración
1. **Configuración de la API de Google**:
- Asegúrese de tener `credentials.json` para la API de Google en su directorio de trabajo.
- Configure un ID de cliente OAuth 2.0 desde la Consola de Google Cloud.
2. **Configuración del Entorno**:
- Cree un entorno virtual de Python y actívelo:
```sh
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
```
- Instale las bibliotecas requeridas:
```sh
pip install pandas xlsxwriter fpdf google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client smtplib email numpy glob warnings xlsx2csv
```
3. **Estructura del Directorio**:
- Asegúrese de que exista la siguiente estructura de directorios:
```
C:\Users\\Falabella\
├── PRD_Tienda
│ ├── Lista_PRD
│ └── Lista_STORE_PICKUP
```
4. **Credenciales**:
- Reemplace los marcadores de posición en el script con valores reales:
- `usuario`: Su nombre de usuario.
- `ruta`: Subdirectorio para Falabella.
- Credenciales de correo electrónico y configuraciones SMTP.
- IDs y URLs de los archivos de Google Sheets.
## Descripción del Script
### 1. Descargar Archivos desde Google Drive
La función `main` maneja la autenticación de Google Drive y descarga hojas de cálculo específicas de Google como archivos Excel:
```python
SCOPES = ["https://www.googleapis.com/auth/drive"]
def download_sheet(service, sheet_id, output_filename):
# Función para descargar una hoja de cálculo de Google como un archivo Excel
...
def main():
creds = None
...
try:
service = build(API_SERVICE_NAME, API_VERSION, credentials=creds)
download_sheet(service, sheet_id_1, os.path.join(ruta_lista_PRD,'Personal Recoleccion diaria '+ str(fecha_hoy)+'.xlsx'))
download_sheet(service, sheet_id_2, 'Dato_tienda_Dev_C&C.xlsx')
except HttpError as error:
print(f"An error occurred: {error}")
if __name__ == "__main__":
main()
```
### 2. Procesar Archivos Excel
El script lee y procesa datos de los archivos Excel descargados, fusiona la información necesaria y crea reportes resumen:
```python
def read_excel(path: str, sheet_name: str) -> pd.DataFrame:
buffer = StringIO()
Xlsx2csv(path, outputencoding="utf-8", sheet_name=sheet_name).convert(buffer)
buffer.seek(0)
df = pd.read_csv(buffer)
return df
# Procesamiento de datos
...
```
### 3. Enviar Reportes Resumen por Correo Electrónico
El script genera un reporte resumen para cada tienda, adjunta los archivos Excel correspondientes y envía un correo electrónico:
```python
# Configuración del correo electrónico
email_usuario = 'su_email@example.com'
contrasena = 'su_contraseña'
servidores_smtp = 'smtp.office365.com'
puertos_smtp = 587
# Iterar sobre las tiendas y enviar correos electrónicos
for tienda in PICKUP_TIENDA['Nombre_Tienda'].unique():
...
# Crear el contenido del correo y adjuntar archivos
...
try:
# Enviar el correo electrónico
server.sendmail(email_usuario, destinatarios_str_to.split(',') + destinatarios_str_CC.split(','), msg.as_string())
registro_correos = pd.concat([registro_correos, pd.DataFrame({"Tienda": tienda, "Resultado": "Correo enviado correctamente"}, index=[0])])
print(f"Correo electrónico enviado correctamente a {tienda}")
except smtplib.SMTPDataError as e:
registro_correos = pd.concat([registro_correos, pd.DataFrame({"Tienda": tienda, "Resultado": f"Error al enviar correo electrónico: {e}"}, index=[0])])
print(f"Error al enviar correo electrónico a {tienda}: {e}")
finally:
server.quit()
```
### Conclusión
Este script automatiza la descarga, el procesamiento y la distribución de reportes diarios, asegurando que los interesados reciban datos actualizados de manera oportuna. Asegúrese de actualizar los marcadores de posición con datos y credenciales reales antes de ejecutar el script.