Estoy tratando de crear un calendario a partir de las hojas de Google usando appscript. Estoy usando tratando a continuación y obteniendo un error.
Esto es lo que estoy tratando de hacer. Quiero crear toda la lista de eventos en googlesheets para el calendario, cualquier actualización adicional en la hoja debe actualizar el calendario solo en cualquier entrada/edición reciente en la hoja y solo en ese evento en particular.
Ejemplo: tengo eventos de la fila A2: A15 en hojas de Google, quiero crearlos todos a la vez. Publique que si agrego una nueva fila A16, debería crear un evento de calendario para los detalles de A16. Además, si edito la fila A10, entonces mi calendario existente en A10 debería actualizarse sin enviar spam a otros eventos del calendario.
Solo por contexto: A1 = Título, B1 = Fecha y hora de inicio, C1 = Fecha y hora de finalización, D1 = correos electrónicos de invitados.
Y traté de declarar la variable guest en for loop, no funcionó tan bien. Cualquier sugerencia o recomendación sobre cómo puedo cumplir con esto.
function create_Events(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Calendar"); var last_row = sheet.getLastRow(); var data = sheet.getRange("A1:E" + last_row).getValues(); var cal = CalendarApp.getCalendarById("CALENDARID"); //Logger.log(data); for(var i = 0;i< data.length;i++){ //index 0 = var event = CalendarApp.getDefaultCalendar().createEvent(data[i][0], new Date(data[i][1]), new Date(data[i][2]), {guests: data[i][3]}); Logger.log('Event ID: ' + event.getId()); } }Funciona para mi. Agregué una columna con id (eventId) para poder actualizar en el futuro. El id también será un buen indicador para seguir el proceso y evitar duplicados.
const myCalend = CalendarApp.getCalendarById("############@gmail.com"); const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); function createCalendarEvent() { sheet.getDataRange().getValues().forEach((entry, i) => { if (entry[0] != '' && entry[4] == '') { let id = myCalend.createEvent(entry[0], entry[1], entry[2], { guests: entry[3] }).getId(); sheet.getRange(+i + 1, 5).setValue(id) } }); } function create_Events() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName("Calendar"); const vs = sh.getRange("A1:E" + sh.getLastRow()).getValues(); const cal = CalendarApp.getDefaultCalendar(); vs.forEach((r, i) => { if (r[0] && r[1] && r[3]) { cal.createEvent(r[0], new Date(r[1]), new Date(r[2]), { guests: r[3] }); } else { Logger.log(i); Logger.log(JSON.stringify(r)); } }); }