Estoy tratando de crear un evento de calendario de todo el día a 14 días a partir de hoy usando Google App Script pero sigo recibiendo el error
Excepción: los parámetros (String,String) no coinciden con la firma del método para CalendarApp.Calendar.createAllDayEvent.
Mi guion es:
var SheetApp = SpreadsheetApp.getActiveSheet(); var SelectedRow = SheetApp.getActiveRange().getRowIndex(); var value = SheetApp.getRange(SelectedRow, 8).getValue(); //Name of the event var eventCal = CalendarApp.getCalendarById("sampleemail@gmail.com"); eventCal.createAllDayEvent(value.toString(), new Date() + 14);Cuando agrega un número a un objeto Fecha, la Fecha se convierte automáticamente a su valor subyacente, es decir, la cantidad de milisegundos desde la época . El resultado de la suma será esa cantidad de milisegundos más 14, que es solo un número entero grande. El método createAllDayEvent() espera un objeto de fecha en lugar de un número entero.
Para obtener una fecha dentro de 14 días , use Date.setDate() . Este método tiene la ventaja de que automáticamente se ocupa de pasar al próximo mes o al próximo año según sea necesario, pero tenga cuidado. El método setDate() modifica un objeto Date en su lugar, pero no devuelve el objeto Date. En su lugar, devuelve el valor subyacente, es decir, el número de milisegundos desde la época.
Esto significa que no puede simplemente asignar el resultado que obtiene de setDate() a una variable con la esperanza de obtener una fecha válida. Algo como const twoWeeksFromNow = new Date().setDate(new Date().getDate() + 14) no funcionará si espera que twoWeeksFromNow contenga una fecha.
Una manera fácil de hacerlo bien es usar una función de utilidad corta, como esta:
function testCreateAllDayEvent() { const twoWeeksFromNow = dateOffset_(new Date(), +14); const eventCal = CalendarApp.getCalendarById("sample_email@gmail.com"); const sheet = SpreadsheetApp.getActiveSheet(); const eventTitle = sheet .getRange('H' + sheet.getActiveRange().getRow()) .getDisplayValue(); eventCal.createAllDayEvent(eventTitle, twoWeeksFromNow); } /** * Gets a new Date object that is offset by numDays from date. * * @param {Date} date The date from which to count. * @param {Number} numDays The number of days to add or subtract from date. * @return {Date} A new Date object that is offset by numDays from date. */ function dateOffset_(date, numDays) { const newDate = new Date(date); newDate.setDate(date.getDate() + numDays); return newDate; }Cambiar segundo parámetro
new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 14)