[ACTUALIZADO]: Para crear un evento del calendario de Google usando AppsScript, podemos usar el método simple de createEvent(eventName, startTime, endTime) . He trabajado con esto y no he tenido ningún problema. Pero el único formato de fecha que he usado fue el formato largo de fecha/hora en las hojas de Google (por ejemplo, 9/3/2021 13:30:00).
Usando el código a continuación, quiero combinar las columnas de fecha y hora en un solo objeto de Fecha para alimentar el método createEvent() pero obtengo un error de Invalid Date válida.
function calendarSyncNew() { var dataSheet = mySheet; var calendarId = calendarId; var eventCal = CalendarApp.getCalendarById(calendarId); var eventArray = dataSheet.getRange('A2:E').getValues(); for (x = 0; x < eventArray.length; x++) { var event = eventArray[x]; var eventName = event[3]; var eventDate = event[0]; var timeZone = event[4]; var startTime = new Date(`${eventDate} ${event[1]} ${timeZone}`); var endTime = new Date(`${eventDate} ${event[2]} ${timeZone}`); eventCal.createEvent(eventName, startTime, endTime); Logger.log(`startTime is: ${startTime}`); Logger.log(`endTime is: ${endTime}`); } }Supongo que esta pregunta está relacionada con su pregunta anterior. Si ese es el caso, tenga la amabilidad de ver los datos de muestra que utilicé y el script a continuación:
// use getDisplayValues for getting the string equivalent of the data instead // filter out rows without values in column A var eventArray = dataSheet.getRange('A2:I') .getDisplayValues() .filter(x => x[0] != ''); eventArray.forEach(event => { var eventName = event[4]; var startTime = new Date(`${event[0]} ${event[1]} ${event[3]}`); var endTime = new Date(`${event[0]} ${event[2]} ${event[3]}`); eventCal.createEvent(eventName, startTime, endTime); });La salida se ajustó a mi zona horaria, por lo que no refleja correctamente las fechas de los datos de muestra, pero se verifica.