Created
November 29, 2025 03:45
-
-
Save HauptJ/807aebe7b06014425a9b21f188a3a3f5 to your computer and use it in GitHub Desktop.
Send Google Meet Invites from Google Form spreadsheet entries
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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