This is an old revision of the document!
Go to form.google.com
Create a form with these questions:
Event Title
Event Start Date and Time
Event End Date and Time
Event Location
Event Description
Add Guest
Once done, go to Responses then click “View responses in sheets”
Rename title of the sheets
Go to tool>Script Editor
Resources > Libraries
Include moment.js
Here's the key: MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48
Type this code.
var moment = Moment.load();
var GLOBAL = {
//the id of the form we will use to create calendar events
formId : "14WoTH-2Uq3tpqPpd2Z19S7OQjOyurri7GaVPsKZRg3w",
//the id of the calendar we will create events on
calendarId : "[email protected]",
//a mapping of form item titles to sections of the calendar event
formMap : {
eventTitle: "Event Title",
startTime : "Event Date and Start Time",
endTime: "Event End Time",
description: "Event Description",
location: "Event Location",
email: "Add Guests",
},
}
function onFormSubmit() {
var eventObject = getFormResponse();
var event = createCalendarEvent(eventObject);
}
function getFormResponse() {
// Get a form object by opening the form using the
// form id stored in the GLOBAL variable object
var form = FormApp.openById(GLOBAL.formId),
//Get all responses from the form.
//This method returns an array of form responses
responses = form.getResponses(),
//find the length of the responses array
length = responses.length,
//find the index of the most recent form response
//since arrays are zero indexed, the last response
//is the total number of responses minus one
lastResponse = responses[length-1],
//get an array of responses to every question item
//within the form for which the respondent provided an answer
itemResponses = lastResponse.getItemResponses(),
//create an empty object to store data from the last
//form response
//that will be used to create a calendar event
eventObject = {};
//Loop through each item response in the item response array
for (var i = 0, x = itemResponses.length; i<x; i++) {
//Get the title of the form item being iterated on
var thisItem = itemResponses[i].getItem().getTitle(),
//get the submitted response to the form item being
//iterated on
thisResponse = itemResponses[i].getResponse();
//based on the form question title, map the response of the
//item being iterated on into our eventObject variable
//use the GLOBAL variable formMap sub object to match
//form question titles to property keys in the event object
switch (thisItem) {
case GLOBAL.formMap.eventTitle:
eventObject.title = thisResponse;
break;
case GLOBAL.formMap.startTime:
eventObject.startTime = thisResponse;
break;
case GLOBAL.formMap.endTime:
eventObject.endTime = thisResponse;
break;
case GLOBAL.formMap.description:
eventObject.description = thisResponse;
break;
case GLOBAL.formMap.location:
eventObject.location = thisResponse;
break;
case GLOBAL.formMap.email:
eventObject.email = thisResponse;
break;
}
}
debugger;
return eventObject;
}
function createCalendarEvent(eventObject) {
//Get a calendar object by opening the calendar using the
//calendar id stored in the GLOBAL variable object
var calendar = CalendarApp.getCalendarById(GLOBAL.calendarId),
//The title for the event that will be created
title = eventObject.title,
//The start time and date of the event that will be created
startTime = moment(eventObject.startTime).toDate(),
//The end time and date of the event that will be created
endTime = moment(eventObject.endTime).toDate();
//an options object containing the description and guest list
//for the event that will be created
var options = {
description : eventObject.description,
guests : eventObject.email,
location: eventObject.location,
};
try {
//create a calendar event with given title, start time,
//end time, and description and guests stored in an
//options argument
var event = calendar.createEvent(title, startTime, endTime, options)
} catch (e) {
//delete the guest property from the options variable,
//as an invalid email address with cause this method to
//throw an error.
delete options.guests
//create the event without including the guest
var event = calendar.createEvent(title, startTime, endTime, options)
}
return event;
}
For formId, copy the code in form url
For the calendarId, create a new calendar then go to Settings > Interate Calendar, you will see the Calendar ID there.