-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathappsScripts.js
More file actions
274 lines (207 loc) · 9.59 KB
/
appsScripts.js
File metadata and controls
274 lines (207 loc) · 9.59 KB
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
// consolidarEventos
function consolidarDatosEventos() {
// Definir el archivo activo
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Crear una nueva hoja consolidada
var hojaConsolidada = spreadsheet.getSheetByName('Eventos');
if (!hojaConsolidada) {
hojaConsolidada = spreadsheet.insertSheet('Eventos');
} else {
// Limpiar la hoja consolidada si ya existe
hojaConsolidada.clear();
}
// Obtener todas las hojas del archivo
var hojas = spreadsheet.getSheets();
// Array para almacenar los datos de B3 a B6
var datosB3 = [];
var datosB4 = [];
var datosB5 = [];
var datosB6 = [];
// Iterar sobre cada hoja
for (var i = 0; i < hojas.length; i++) {
var hoja = hojas[i];
// Obtener los datos de B3 de la hoja actual
var rangoB3 = hoja.getRange('B3');
var datosB3Hoja = rangoB3.getValues();
datosB3.push.apply(datosB3, datosB3Hoja);
// Obtener los datos de B4de la hoja actual
var rangoB4 = hoja.getRange('B4');
var datosB4Hoja = rangoB4.getValues();
datosB4.push.apply(datosB4, datosB4Hoja);
// Obtener los datos de B5 de la hoja actual
var rangoB5 = hoja.getRange('B5');
var datosB5Hoja = rangoB5.getValues();
datosB5.push.apply(datosB5, datosB5Hoja);
// Obtener los datos de B6 de la hoja actual
var rangoB6 = hoja.getRange('B6');
var datosB6Hoja = rangoB6.getValues();
datosB6.push.apply(datosB6, datosB6Hoja);
}
// Agregar los encabezados
var encabezados = ['nombre_evento', 'descripcion_evento', 'fecha_evento', 'url_acceso'];
hojaConsolidada.getRange(1, 1, 1, encabezados.length).setValues([encabezados]);
// Pegar los datos de B3 a B6 en la hoja consolidada
hojaConsolidada.getRange(2, 1, datosB3.length, 1).setValues(datosB3);
hojaConsolidada.getRange(2, 2, datosB4.length, datosB4[0].length).setValues(datosB4);
hojaConsolidada.getRange(2, 3, datosB5.length, datosB5[0].length).setValues(datosB5);
hojaConsolidada.getRange(2, 4, datosB6.length, datosB6[0].length).setValues(datosB6);
}
// consolidarParticipantes
function consolidarDatosParticipantes() {
// Definir el archivo activo
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Crear una nueva hoja consolidada de Participantes
var hojaConsolidada = spreadsheet.getSheetByName('Participantes');
if (!hojaConsolidada) {
hojaConsolidada = spreadsheet.insertSheet('Participantes');
} else {
// Limpiar la hoja consolidada si ya existe
hojaConsolidada.clear();
}
// Obtener todas las hojas del archivo
var hojas = spreadsheet.getSheets();
// Definir el rango que va de A a F inciando en la fila 10
var rangoInicial = 'A10:F';
// Agregar los encabezados
var encabezados = ['nombre', 'apellidos', 'correo_electronico', 'poblacion', 'provincia_estado','pais'];
hojaConsolidada.getRange(1, 1, 1, encabezados.length).setValues([encabezados]);
// Iterar sobre cada hoja
for (var i = 0; i < hojas.length; i++) {
var hoja = hojas[i];
// Obtener el rango que deseas consolidar en la hoja actual
var rangoHoja = hoja.getRange(rangoInicial);
// Obtener los datos del rango
var datos = rangoHoja.getValues();
// Obtener la última fila ocupada en la hoja consolidada
var ultimaFilaConsolidada = hojaConsolidada.getLastRow();
hojaConsolidada.getRange(ultimaFilaConsolidada + 1, 1, datos.length, datos[0].length).setValues(datos);
}
}
// eliminarParticipantesDuplicados
function eliminarParticipantesDuplicados() {
// Definir el archivo activo
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Obtener la hoja consolidada
var hojaConsolidada = spreadsheet.getSheetByName('Participantes');
// Definir el rango de datos en la hoja consolidada
var datosConsolidados = hojaConsolidada.getDataRange().getValues();
var filasAgregadas = new Set();
// Recorrer los datos en sentido inverso para eliminar duplicados
for (var i = datosConsolidados.length - 1; i >= 1; i--) {
var filaActual = datosConsolidados[i].join();
if (filasAgregadas.has(filaActual)) {
// Eliminar la fila duplicada
hojaConsolidada.deleteRow(i + 1);
}
filasAgregadas.add(filaActual);
}
}
// inscripcionID
function inscripcionID() {
// Definir el archivo activo
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Crear una nueva hoja consolidada de Inscripciones
var hojaConsolidada = spreadsheet.getSheetByName('Inscripciones');
if (!hojaConsolidada) {
hojaConsolidada = spreadsheet.insertSheet('Inscripciones');
} else {
// Limpiar la hoja consolidada si ya existe
hojaConsolidada.clear();
}
// Obtener todas las hojas del archivo
var hojas = spreadsheet.getSheets();
// Definir el rango que va de A a F iniciando en la fila 10
var rangoInicial = 'C10:C';
// Agregar los encabezados
var encabezados = ['ID', 'correo_electronico', 'nombre_evento', 'ID_evento'];
hojaConsolidada.getRange(1, 1, 1, encabezados.length).setValues([encabezados]);
// Crear mapas para almacenar los IDs asociados a los correos electrónicos y nombres de eventos únicos
var mapaIDsCorreo = {};
var mapaIDsEvento = {};
// Iterar sobre cada hoja
for (var i = 0; i < hojas.length; i++) {
var hoja = hojas[i];
// Obtener los datos de B3 de la hoja actual
var rangoB3 = hoja.getRange('B3');
var datosB3Hoja = rangoB3.getValue();
// Obtener el rango que deseas consolidar en la hoja actual
var rangoHojaCorreo = hoja.getRange('C10:C');
var rangoHojaEvento = hoja.getRange('B3');
// Obtener los datos del rango
var datosCorreo = rangoHojaCorreo.getValues();
var datosEvento = [[datosB3Hoja]];
// Filtrar filas con datos existentes
datosCorreo = datosCorreo.filter(function(fila) {
return fila[0] !== '';
});
if (datosCorreo.length > 0) {
// Iterar sobre los datos y asignar IDs numéricos a los correos electrónicos únicos
for (var j = 0; j < datosCorreo.length; j++) {
var correoElectronico = datosCorreo[j][0];
if (!mapaIDsCorreo.hasOwnProperty(correoElectronico)) {
// Asignar un nuevo ID numérico si el correo electrónico no está en el mapa
mapaIDsCorreo[correoElectronico] = Object.keys(mapaIDsCorreo).length + 1;
}
}
// Obtener la última fila ocupada en la hoja consolidada
var ultimaFilaConsolidada = hojaConsolidada.getLastRow();
// Asignar IDs numéricos a los correos electrónicos en la hoja consolidada
var idsCorreo = datosCorreo.map(function(fila) {
return [mapaIDsCorreo[fila[0]]];
});
// Asignar un ID único al evento en la hoja consolidada
var nombreEvento = datosEvento[0][0];
if (!mapaIDsEvento.hasOwnProperty(nombreEvento)) {
mapaIDsEvento[nombreEvento] = Object.keys(mapaIDsEvento).length + 1;
}
var idEvento = mapaIDsEvento[nombreEvento];
// Pegar los datos en la hoja consolidada, incluyendo los IDs y el nombre del evento
hojaConsolidada.getRange(ultimaFilaConsolidada + 1, 1, datosCorreo.length, 1).setValues(idsCorreo);
hojaConsolidada.getRange(ultimaFilaConsolidada + 1, 2, datosCorreo.length, 1).setValues(datosCorreo);
hojaConsolidada.getRange(ultimaFilaConsolidada + 1, 3, datosCorreo.length, 1).setValue(nombreEvento);
hojaConsolidada.getRange(ultimaFilaConsolidada + 1, 4, datosCorreo.length, 1).setValue(idEvento);
}
}
}
// descargaReporteCSV
function descarga(){
function descargarCSV() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
archivos = ['Participantes','Eventos','Inscripciones']
// Descargar la hoja "Participantes"
for(var i = 0; i < archivos.length; i++){
descargarHojaCSV(spreadsheet, archivos[i]);
}
}
function descargarHojaCSV(spreadsheet, hojaNombre) {
// Obtener la hoja por nombre
var hoja = spreadsheet.getSheetByName(hojaNombre);
// Obtener los datos de la hoja
var datos = hoja.getDataRange().getValues();
// Convertir los datos a una cadena CSV
var csv = convertirDatosACSV(datos);
// Crear un archivo CSV
var blob = Utilities.newBlob(csv, 'application/octet-stream', hojaNombre + '.csv');
// Crear el archivo CSV en Google Drive y obtener la URL de descarga
var urlDescarga = DriveApp.createFile(blob).getDownloadUrl();
// Abrir la URL de descarga en una nueva ventana del navegador
var html = '<script>window.open("' + urlDescarga + '");</script>';
var userInterface = HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Descarga de CSV');
}
function convertirDatosACSV(datos) {
var csv = "";
for (var i = 0; i < datos.length; i++) {
csv += datos[i].join(",") + '\n';
}
return csv;
}
descargarCSV()
}
// Funcion de ejecucion
function ejecutar() {
consolidarDatosEventos()
consolidarDatosParticipantes()
inscripcionID()
descarga()
}