-
Notifications
You must be signed in to change notification settings - Fork 0
/
2b_envia_emails_contacto.R
158 lines (107 loc) · 5.54 KB
/
2b_envia_emails_contacto.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
library(formularios11F)
library(dplyr)
# Configuración
config <- leer_config("config/config.json")
ID_SHEET_CONTACTOS_LIMPIO <- config$ids_googledrive$contactos$limpio
ID_SHEET_CONTACTOS_ENVIADO <- config$ids_googledrive$contactos$enviado
CUENTA_ENVIO_EMAILS <- config$email_envios
MAX_ENVIOS_DIARIOS <- 200 # comparte el numero con los envios a contactos, si no podrían ser 400
# Autenticación cuenta Gmail
gmail_acceso("config/gmail_credentials.json")
#TODO
#do something so you don't need to write 1 everytime
# Filtrar peticiones de contacto con centros pendientes de gestionar
contactos_limpio <- get_contactos_centros_limpio(file_id=ID_SHEET_CONTACTOS_LIMPIO)
contactos_limpio_filtrado <- contactos_limpio %>%
filter(procesado %in% c("OK", "CORREGIDO", "ERROR"))
contactos_revisados <- get_contactos_centros_limpio(file_id=ID_SHEET_CONTACTOS_LIMPIO) %>%
filter(procesado %in% "REVISADO")
contactos_enviado <- get_contactos_centros_limpio(file_id=ID_SHEET_CONTACTOS_ENVIADO)
contactos_pendientes <- contactos_limpio_filtrado %>%
filter(! id %in% contactos_enviado$id) %>%
rbind(contactos_revisados)
if (nrow(contactos_pendientes) == 0) {
stop("No hay contactos con centros pendientes de gestionar.")
}
# Recuento nº mails enviados hoy
total_enviados <- sum(startsWith(contactos_enviado$procesado, format(Sys.Date(), format="%d/%m/%Y")))
# Enviar emails de peticiones de contacto no válidas
print("Empezamos por los errores (marcados como <ERROR> en el campo <procesado>)")
peticiones_error <- which(contactos_pendientes$procesado == "ERROR")
peticiones_validas <- which(contactos_pendientes$procesado != "ERROR")
for (i in peticiones_error) {
if (total_enviados >= MAX_ENVIOS_DIARIOS) {
break # Se sigue ejecutando el script para subir los datos actualizados
}
print(paste("Correo", i, " de ", nrow(contactos_pendientes)))
gmail_envia_email(
to = contactos_pendientes$email[i],
from = CUENTA_ENVIO_EMAILS,
reply_to = contactos_pendientes$email[i],
subject = "Datos incorrectos en formulario de contacto",
body = paste0(
"Hola,\n\n",
"Gracias por interesarte en la iniciativa 11 de Febrero e intentar contactar con un centro educativo. ",
"Lamentablemente, el número de solicitud o el nombre de centro que has introducido no es válido. ",
"Puedes verlos más abajo.\n\n",
"Por favor, vuelve a consultar la tabla y a rellenar de nuevo el formulario con los datos correctos. Gracias.\n",
"\nCordialmente,\n",
"El equipo de coordinación de 11 de Febrero",
"\n\n-------------------------\n\n",
texto_email_fallo(contactos_pendientes[i,])
)
)
contactos_pendientes$validacion[i] <- contactos_pendientes$procesado[i]
contactos_pendientes$procesado[i] <- format(Sys.time(), format="%d/%m/%Y %T")
total_enviados <- total_enviados + 1
Sys.sleep(1)
}
# Enviar emails de peticiones de contacto válidas
print("Vamos con las peticiones válidas")
for (i in peticiones_validas) { # es decir: OK, CORREGIDO o REVISADO
if (total_enviados >= MAX_ENVIOS_DIARIOS) {
break # Se sigue ejecutando el script para subir los datos actualizados
}
print(paste("Correo", i, contactos_pendientes$email_centro[i]))
gmail_envia_email(
to = contactos_pendientes$email_centro[i],
from = CUENTA_ENVIO_EMAILS,
reply_to = contactos_pendientes$email[i],
subject = "Te ha llegado un mensaje por tu solicitud de charla/taller para el 11F",
body = paste0(
"Hola,\n\n",
"Te ha llegado un mensaje relativo a tu solicitud de una charla o taller en la Iniciativa 11 de Febrero.\n\n",
"Por favor, escribe a la mayor brevedad a la persona que te ha contactado para impartir la charla. ",
"Es con ella con quien debes tener la comunicación a partir de ahora. ",
"Tienes sus datos de contacto junto al mensaje que te ha escrito más abajo.\n\n",
"En caso de que concertéis la charla, por favor, pedid a la ponente que nos haga llegar la información ",
"a través del siguiente enlace: https://11defebrero.org/quieres-anunciar-una-charla-o-actividad\n\n",
"Al responder a este mensaje estarás escribiendo a quien te contactó, y no a la iniciativa 11F.\n\n",
"En caso de que tengas que contactar con 11deFebrero pincha aquí: https://11defebrero.org/contacto\n",
"\nCordialmente,\n",
"El equipo de coordinación de 11 de Febrero",
"\n\n-------------------------\n\n",
texto_email_contacto(contactos_pendientes[i,])
)
)
contactos_pendientes$procesado[i] <- format(Sys.time(), format="%d/%m/%Y %T")
total_enviados <- total_enviados + 1
Sys.sleep(1)
}
# Subir a Google Drive
contactados <- contactos_pendientes %>%
rbind(contactos_enviado) %>%
arrange(procesado)
upload_contactos_centros_limpio(contactados, file_id=ID_SHEET_CONTACTOS_ENVIADO)
contactos_limpio[contactos_limpio$procesado == "REVISADO", "procesado"] <- "REENVIADO"
upload_contactos_centros_limpio(contactos_limpio, file_id=ID_SHEET_CONTACTOS_LIMPIO)
# Aviso alcanzado el máximo de mails enviados
if (total_enviados >= MAX_ENVIOS_DIARIOS) {
stop(paste(
"Se ha alcanzado el límite diario de envíos.",
"La hoja de enviados se ha actualizado con los que han entrado dentro del cupo.",
"Ejecuta de nuevo mañana para enviar los mails restantes.",
"Cuidado con los REENVIADOS, es posible que se hayan quedado sin enviar,",
"compruébalo en la hoja de enviados."
))
}