Skip to content

Instantly share code, notes, and snippets.

@HauptJ
Created November 29, 2025 03:45
Show Gist options
  • Select an option

  • Save HauptJ/807aebe7b06014425a9b21f188a3a3f5 to your computer and use it in GitHub Desktop.

Select an option

Save HauptJ/807aebe7b06014425a9b21f188a3a3f5 to your computer and use it in GitHub Desktop.
Send Google Meet Invites from Google Form spreadsheet entries
const GLOBAL_EVENT_ID_CELL = "E2";
const GLOBAL_TZ = "America/Chicago";
const GLOBAL_TZ_MOD = "-06:00";
function initMeeting(calendarId, eventReqId, eventOwner, eventName, eventStart, eventEnd, eventDesc) {
try {
if(calendarId == null || eventReqId == null || eventOwner == null || eventName == null || eventStart == null | eventDesc == null) {
throw "Required parameneters not present"
}
var attendees = [{email: eventOwner}];
const event = {
summary: eventName,
description: eventDesc,
start: {
dateTime: eventStart,
timeZone: GLOBAL_TZ,
},
end: {
dateTime: eventEnd,
timeZone: GLOBAL_TZ,
},
conferenceData: {
createRequest: {
requestId: eventReqId,
conferenceSolutionKey: {
type: "hangoutsMeet",
},
},
},
attendees: attendees,
};
try {
var res = Calendar.Events.insert(event, calendarId, { conferenceDataVersion: 1, });
return res.id;
} catch (error) {
Logger.log('Error creating event: %s', error.toString());
}
} catch (error) {
Logger.log('Error creating event: %s', error.toString());
}
}
function addAttendees(calendarId, eventId, guestList) {
try {
if(eventId == null){
Logger.log("EventId is null");
throw "EventId is null";
}
var event = Calendar.Events.get(calendarId, eventId);
var attendees = event.attendees;
Logger.log(event.attendees);
var origAttendeesCnt = attendees.length;
guestList.forEach(function(newGuest){
if(!attendees.includes(newGuest)){
Logger.log(newGuest);
attendees.push({email: newGuest});
}
});
if(origAttendeesCnt < attendees.length){
var resource = { attendees: attendees };
var args = { sendUpdates: "all" };
Calendar.Events.patch(resource, calendarId, eventId, args);
}
} catch (error) {
Logger.log('Error updating event attendee list: %s', error.toString());
}
}
function inviteToMeet() {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var meetInfo = ss.getSheetByName("info");
const eventName = meetInfo.getRange("A2").getValue();
const eventStart = meetInfo.getRange("B2").getValue();
const eventEnd = meetInfo.getRange("C2").getValue();
const eventDesc = meetInfo.getRange("D2").getValue();
var signUps = ss.getSheetByName("Form Responses 1");
var lastSingUpRow = signUps.getLastRow();
var signUpsEmails = signUps.getRange("A2:B" + lastSingUpRow).getValues();
var guestList = [];
//var calendarId = CalendarApp.getDefaultCalendar();
var calendarId = 'primary';
Logger.log(eventName);
Logger.log(eventStart);
Logger.log(eventEnd);
Logger.log(eventDesc);
Logger.log(calendarId);
//eventReqId = eventName.slice(0, 8).replace(/\s+/g, '').toLowerCase();
var eventReqId = 'unique-request-id-' + new Date().getTime(); // Unique ID for the request
var eventOwner = "@hauptj.com";
Logger.log(eventReqId);
Logger.log(eventOwner);
if(meetInfo.getRange(GLOBAL_EVENT_ID_CELL).isBlank()){
var eventId = initMeeting(calendarId, eventReqId, eventOwner, eventName, eventStart, eventEnd, eventDesc);
meetInfo.getRange(GLOBAL_EVENT_ID_CELL).setValue(eventId);
return;
}
if(signUpsEmails.length > 0) {
if(eventId == null && !meetInfo.getRange(GLOBAL_EVENT_ID_CELL).isBlank()){
eventId = meetInfo.getRange(GLOBAL_EVENT_ID_CELL).getValue();
for(var i = 0; i < signUpsEmails.length; i++) {
Logger.log(signUpsEmails[i][1]);
guestList.push(signUpsEmails[i][1]);
}
addAttendees(calendarId, eventId, guestList);
}
}
} catch (error) {
Logger.log('Error managing event: %s', error.toString());
} finally {
return;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment