The Google Script will create a new event in the specified Google Calendar and will attach a file from Google Drive into the event.
Google Calendar API only allows file attachments from Google Drive and you can include a maximum of 25 attachment per event. The attachments can be specified either by File ID or by File URL. The Advanced Calendar API should be enabled from your Google Console.
// Credits / References
// https://developers.google.com/google-apps/calendar/v3/reference/events
// http://stackoverflow.com/questions/34853043
function createEvent() {
var calendarId = '{{Google Calendar Id}}';
// April 20, 2016 10:00:00 AM
var start = new Date(2016, 3, 20, 10, 0, 0);
// April 20, 2016 10:30:00 AM
var end = new Date(2016, 3, 20, 10, 30, 0);
var fileName = 'Appraisal Guidlines.pdf';
// Get the Drive ID of the file attachments
// Only Google Drive file are support in Google Calendar
var fileId = DriveApp.getFilesByName(fileName).next().getId();
var calendarEvent = {
summary: 'Performance Appraisal',
description: 'Submit Appraisal Document for March.',
location: '10 Hanover Square, NY 10005',
start: {
dateTime: start.toISOString(),
},
end: {
dateTime: end.toISOString(),
},
attachments: [
{
fileId: fileId,
title: fileName,
},
],
attendees: [
{
email: 'employee1@ctrlq.org',
},
{
email: 'employee2@labnol.org',
},
],
};
// Set supportsAttachments to true
// if the calendarEvent object has one or more file attachments
calendarEvent = Calendar.Events.insert(calendarEvent, calendarId, {
supportsAttachments: true,
});
Logger.log('Event with attachment created. Event ID is %s' + calendarEvent.getId());
// For debugging the output
Logger.log(calendarEvent);
}