function agregar_eventos() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Prueba Automatizacion");
var fila_inicial = 2;
var columna_inicial = 1;
var columna_url_evento = 8;
var columna_id_evento = 9;
var ultima_fila = sheet.getLastRow() - 1;
// El rango con la información necesaria:
// desde A2 (columna Nombre) hasta la última fila con datos,
// abarcando 9 columnas
var range = sheet.getRange(fila_inicial, columna_inicial, ultima_fila, columna_id_evento);
// Mapeamos los valores a un arreglo de objetos con sus propiedades correspondientes
var datos = range.getValues().map(
([titulo, fecha_inicio, fecha_fin, ubicacion, info_adicional, invitados, id_calendario, url_evento, id_evento]) =>
({titulo, fecha_inicio, fecha_fin, ubicacion, info_adicional, invitados, id_calendario, url_evento, id_evento})
);
// Para cada elemento de la lista de datos agregamos un evento
datos.forEach((dato,index) => {
// Solamente procesamos las filas que no tengan ya información de id de evento
// Y que tengan título, fecha de inicio y fecha de fin
if(dato.id_evento == "" && dato.titulo != "" && dato.fecha_inicio != "" && dato.fecha_fin != "") {
var fecha_inicio = new Date(dato.fecha_inicio);
var fecha_fin = new Date(dato.fecha_fin);
// Creamos el evento createEvent(title, startTime, endTime, options)
var evento = CalendarApp.getCalendarById(dato.id_calendario).createEvent(
dato.titulo,
fecha_inicio,
fecha_fin,
{
location: dato.ubicacion,
description: dato.info_adicional,
guests: dato.invitados,sendInvites: true
}
)
// Construimos la URL del evento a partir de los IDs de evento y calendario
// Escribimos en la hoja la confirmación de la creación
// en la columna de URL evento y ID evento
sheet.getRange(fila_inicial + index, columna_url_evento).setValue(evento_url);
sheet.getRange(fila_inicial + index, columna_id_evento).setValue(evento.getId());
// Recomendado por Google para obligar a la hoja a actualizarse
SpreadsheetApp.flush();
}
})
}