With this code I can send the events directly to google calendar from google sheets. The start date and end date are on two different columns (col D and col F), the problem is that I need also the time that are on others two columns (col E and col G). How could I join startDate with date+time and endDate with date+time?
function sendToCalendar() {
var spreadsheet = SpreadsheetApp.getActive().getSheetByName('XCALENDAR')
var calendarID = spreadsheet.getRange("O1").getValue();
var eventCal = CalendarApp.getCalendarById(calendarID);
var signups = spreadsheet.getRange("A5:P5").getValues();
for (x=0; x<signups.length;x++)
{
var shift = signups[x];
var startTime = shift[3];
var endTime = shift[5];
var nameevent= shift[1];
var desc= shift[13];
var color = shift[15];
var event = eventCal.createEvent(nameevent, startTime, endTime,{description:desc});
if(color){
event.setColor(CalendarApp.EventColor[color]);
}
}
}
new Date(d.getFullYear(), d.getMonth(), d.getDate(), t.getHours(), t.getMinutes(), t.getSeconds())
try with
function createEvent() {
// A = title, B = description, C = location, D = begin .. E = at, F = end ... G = at
const myCalend = CalendarApp.getCalendarById("xxxxxxxxxxxx@gmail.com");
const sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
const [headers, ...data] = sh.getRange('A1:H' + sh.getLastRow()).getValues()
const colID = 8; // H
data.forEach((r, index) => {
if (r[colID - 1] == '') {
let [title, desc, loc] = [r[0], r[1], r[2]]
let [bd, bh, ed, eh] = [r[3], r[4], r[5], r[6]]
let id = (myCalend.createEvent(
title,
new Date(bd.getFullYear(), bd.getMonth(), bd.getDate(), bh.getHours(), bh.getMinutes(), bh.getSeconds()),
new Date(ed.getFullYear(), ed.getMonth(), ed.getDate(), eh.getHours(), eh.getMinutes(), eh.getSeconds()),
{
description: desc,
location: loc
}).getId())
sh.getRange(index + 2, colID).setValue(id)
}
})
}
according to your spreadsheet, and assuming that dates are as dd/MM/yyyy, you can use (the eventID will be stored in column M=13 and prevent duplicating event)
function sendToCal() {
var spreadsheet = SpreadsheetApp.getActive().getSheetByName('Foglio1')
let eventCal = CalendarApp.getCalendarById("xxxxxxxxx@gmail.com");
var signups = spreadsheet.getRange("A2:M" + spreadsheet.getLastRow()).getDisplayValues();
var col = 13; // M
for (x = 0; x < signups.length; x++) {
var shift = signups[x];
if (shift[(col - 1)] == '') {
let [d, e, f, g] = [shift[3].split("/"), shift[4].split(":"), shift[5].split("/"), shift[6].split(":")]
let [nameevent, desc, color] = [shift[1], shift[11], shift[12]]
var startTime = new Date(parseInt(d[2]), parseInt(d[1])-1, parseInt(d[0]), parseInt(e[0]), parseInt(e[1]), 0)
var endTime = new Date(parseInt(f[2]), parseInt(f[1])-1, parseInt(f[0]), parseInt(g[0]), parseInt(g[1]), 0)
var event = eventCal.createEvent(nameevent, startTime, endTime, { description: desc });
spreadsheet.getRange(+x + 2, col).setValue(event.getId())
if (color) {
event.setColor(CalendarApp.EventColor[color]);
}
}
}
}