moodLearning Wiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

google-form-to-calendar-sync [2018/01/26 02:26]
ktiamzon [Code]
google-form-to-calendar-sync [2020/06/13 15:10]
Line 1: Line 1:
-====== Google Form-to-Calendar Sync ====== 
  
-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. 
-===== 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.