How to add Google Form responses to Google Calendar
Bookings, appointment requests, leave requests, event sign-ups: if people pick a date in a Google Form, you probably want each response in your calendar. Google Forms can't do this alone, but its responses sheet can. Here are two ways.
Updated October 2026
First: ask for the date the right way
Use a Date question and, in its ⋮ menu, turn on Include time. Then the start arrives as one proper date-and-time cell. Separate "Date" and "Time" questions work too, but they're fiddlier in a script. Then, on the form's Responses tab, press Link to Sheets so every response lands in a sheet.
Method 1: an Apps Script trigger
This script runs each time a response arrives and creates an event from it. It finds columns by their question titles, so change the names in the quotes to match your form.
- Open the responses sheet, then Extensions → Apps Script. Paste this and save:
// Run once to start: makes onResponse run for every new form response.
function install() {
ScriptApp.newTrigger('onResponse').forSpreadsheet(SpreadsheetApp.getActive()).onFormSubmit().create();
}
function onResponse(e) {
const sheet = e.range.getSheet();
const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
const row = sheet.getRange(e.range.getRow(), 1, 1, headers.length).getValues()[0];
const answer = (question) => row[headers.indexOf(question)];
const start = answer('Date and time'); // a Date question with "Include time" on
if (!(start instanceof Date)) return;
const end = new Date(start.getTime() + 60 * 60 * 1000); // one hour
CalendarApp.getDefaultCalendar().createEvent('Booking: ' + answer('Your name'), start, end, {
description: answer('Anything we should know?') || '',
});
}
- Choose install in the function menu, press Run and allow access. Only run it once, or each response makes two events.
- Submit a test response and check your calendar.
Things to know:
- Times an hour out: set the script's time zone (Project settings) to the spreadsheet's (File → Settings).
- Edited responses fire the trigger again and make a second event. There's no link back from the event to its row, so changes and cancellations have to be made by hand in Calendar.
- Failures are silent. If a response is missing a date, nothing happens, and errors only appear under Executions in the Apps Script editor.
- To add the respondent as a guest, add
guests: answer('Email Address'), plussendInvites: trueif they should get an invitation email.
Method 2: Sheet to Calendar Sync, no code
Sheet to Calendar Sync treats the responses sheet like any other: each row becomes an event, and editing a row (or a response) updates that same event instead of adding another.
- Install it from the Google Workspace Marketplace, and open the form's responses sheet.
- Extensions → Sheet to Calendar Sync → Open, and pick the responses sheet. It says "(form responses)" after its name.
- Map your questions to the event: for example, "Your name" as the title, the date question as the start, "Email Address" as a guest.
- Press Sync to Calendar to add the responses you already have.
- Tick Add an event for each new response automatically. From then on, new responses go straight into the calendar.
You also get the things a quick script leaves out: separate date and time questions are combined for you, guests aren't emailed unless you choose, each response's status shows in the sheet, and there's an undo. Syncing by hand is free for the first 25 responses. Automatic syncing and unlimited rows are part of Pro, at $5 a month or $39 a year.
Common questions
Can Google Forms add events to Google Calendar without anything else?
No. Forms only collects responses. You need the responses sheet plus a script or an add-on to create the events.
Can I send each response to a different calendar?
Yes. In a script, pick the calendar with getCalendarById based on an answer. In the add-on, map a question to the Calendar column; the answer can be a calendar's name.
How do I stop double bookings?
Neither method checks for clashes before adding an event. For self-service booking with live availability, Google Calendar's built-in appointment schedules are a better fit than a form.
More on spreadsheets
For schedules you type into a sheet yourself, see how to add events from Google Sheets to Google Calendar.