ImportEvent
Imports an event into a calendar.
Execute
Imports a single event into a Google Calendar using the Events.import API.
Basic usage example with common fields:
EXEC ImportEvent CalendarId = 'primary', ICalUID = 'external-uid-12345', Summary = 'Team Sync', Status = 'confirmed', StartDateTime = '2025-09-10T09:00:00Z', StartDateTimeZone = 'UTC', EndDateTime = '2025-09-10T10:00:00Z', EndDateTimeZone = 'UTC', Description = 'Weekly sync up', Location = 'Room 101'
You can also specify Recurrences (pipe-separated RRULE|EXRULE|RDATE|EXDATE lines), SourceTitle/SourceUrl, visibility and other standard event fields as documented in the input list.
Aggregate inputs: JSON array or #TEMP table
The following inputs support either a JSON array literal or a temporary table reference (use the special table suffixed with #Temp and pass its name as the input value). This enables bulk/aggregate inserts:
ReminderOverrides
Only used when RemindersUseDefault = 'false'. Each override defines one reminder:
- Method ('email'|'popup')
- Minute (integer minutes before start; 0-40320)
Maximum of 5 overrides.
Option A: JSON array
EXEC ImportEvent
CalendarId = 'primary',
ICalUID = 'uid-rem-1',
Summary = 'With Custom Reminders',
Status = 'confirmed',
StartDateTime = '2025-11-20T15:00:00Z',
EndDateTime = '2025-11-20T16:00:00Z',
RemindersUseDefault = 'false',
ReminderOverrides = '[{"method":"email","minutes":30},{"method":"popup","minutes":10}]'
Option B: #TEMP table
INSERT INTO EventReminders#Temp(Method, Minute) VALUES ('email', 30);
INSERT INTO EventReminders#Temp(Method, Minute) VALUES ('popup', 10);
EXEC ImportEvent
CalendarId = 'primary',
ICalUID = 'uid-rem-2',
Summary = 'With Custom Reminders (Temp)',
Status = 'confirmed',
StartDateTime = '2025-11-20T15:00:00Z',
EndDateTime = '2025-11-20T16:00:00Z',
RemindersUseDefault = 'false',
ReminderOverrides = 'EventReminders#Temp'
Attendees
Each attendee must at least include an Email. Optional columns: DisplayName, Comment, Optional, AdditionalGuests, Resource, ResponseStatus ('needsAction'|'declined'|'tentative'|'accepted'), Organizer.
Option A: JSON array
EXEC ImportEvent
CalendarId = 'primary',
ICalUID = 'uid-att-1',
Summary = 'Event With Attendees',
Status = 'confirmed',
StartDateTime = '2025-12-01T10:00:00Z',
EndDateTime = '2025-12-01T11:00:00Z',
Attendees = '[
{"email":"[email protected]","displayName":"Alice"},
{"email":"[email protected]","optional":true}
]'
Option B: #TEMP table
INSERT INTO EventAttendees#Temp(DisplayName, Email, Comment, Optional, AdditionalGuests, Resource, ResponseStatus, Organizer)
VALUES ('Alice', '[email protected]', 'Project lead', false, 0, false, 'accepted', false);
INSERT INTO EventAttendees#Temp(DisplayName, Email, Optional)
VALUES ('Bob', '[email protected]', true);
EXEC ImportEvent
CalendarId = 'primary',
ICalUID = 'uid-att-2',
Summary = 'Event With Attendees (Temp)',
Status = 'confirmed',
StartDateTime = '2025-12-01T10:00:00Z',
EndDateTime = '2025-12-01T11:00:00Z',
Attendees = 'EventAttendees#Temp'
Conference Data
Conference details require ConferenceDataVersion = '1'.
A) Create a new conference (Google Meet)
EXEC ImportEvent CalendarId = 'primary', ICalUID = 'uid-conf-new', Summary = 'Meet With Team', Status = 'confirmed', StartDateTime = '2025-12-10T14:00:00Z', EndDateTime = '2025-12-10T15:00:00Z', ConferenceDataVersion = '1', ConferenceDataCreateNewRequest = 'true', ConferenceDataConferenceSolutionType = 'hangoutsMeet'
B) Use existing conference data
Provide available ConferenceData fields (ConferenceDataConferenceId, ConferenceDataNotes, ConferenceDataSignature, ConferenceDataConferenceSolutionType, ConferenceDataConferenceSolutionIconUri, ConferenceDataConferenceSolutionName) and at least one ConferenceDataEntryPoints item, via JSON or #TEMP table.
EntryPoints JSON array example:
EXEC ImportEvent
CalendarId = 'primary',
ICalUID = 'uid-conf-existing',
Summary = 'Join Existing Conference',
Status = 'confirmed',
StartDateTime = '2025-12-15T09:00:00Z',
EndDateTime = '2025-12-15T10:00:00Z',
ConferenceDataVersion = '1',
ConferenceDataConferenceId = 'aaa-bbbb-ccc',
ConferenceDataConferenceSolutionType = 'hangoutsMeet',
ConferenceDataConferenceSolutionName = 'Google Meet',
ConferenceDataEntryPoints = '[{"entryPointType":"video","label":"meet","meetingCode":"aaa-bbbb-ccc","uri":"https://meet.google.com/aaa-bbbb-ccc"}]'
EntryPoints #TEMP table example (ConferenceDataEntryPoints#Temp)
Columns: AccessCode, EntryPointType, Label, MeetingCode, Passcode, Password, PIN, URI.
INSERT INTO ConferenceDataEntryPoints#Temp(EntryPointType, Label, MeetingCode, Uri)
VALUES ('video', 'Google Meet', 'aaa-bbbb-ccc', 'https://meet.google.com/aaa-bbbb-ccc');
EXEC ImportEvent
CalendarId = 'primary',
ICalUID = 'uid-conf-existing-2',
Summary = 'Join Existing Conference (Temp)',
Status = 'confirmed',
StartDateTime = '2025-12-15T09:00:00Z',
EndDateTime = '2025-12-15T10:00:00Z',
ConferenceDataVersion = '1',
ConferenceDataConferenceId = 'aaa-bbbb-ccc',
ConferenceDataConferenceSolutionType = 'hangoutsMeet',
ConferenceDataConferenceSolutionName = 'Google Meet',
ConferenceDataEntryPoints = 'ConferenceDataEntryPoints#Temp'
Attachments
Provide a pipe-separated list of file URLs in AttachmentsFileUrls. To include attachments in responses, set SupportsAttachments = 'true'.
EXEC ImportEvent CalendarId = 'primary', ICalUID = 'uid-attch-ps', Summary = 'Event With Attachments', Status = 'confirmed', StartDateTime = '2025-12-05T09:00:00Z', EndDateTime = '2025-12-05T09:30:00Z', SupportsAttachments = 'true', AttachmentsFileUrls = 'https://example.com/file1|https://docs.google.com/document/d/1Abc...'
Full example combining multiple inputs
EXEC ImportEvent CalendarId = 'primary', ICalUID = 'test-uid-1757601360956', Summary = 'Test Event', Status = 'confirmed', ConferenceDataVersion = '1', SupportsAttachments = 'true', Visibility = 'default', Transparency = 'opaque', Description = 'Automated test description', Location = 'Test Location', ColorId = '1', AttendeesOmitted = 'false', GuestsCanInviteOthers = 'true', GuestsCanModify = 'false', GuestsCanSeeOtherGuests = 'true', Sequence = '0', StartDateTime = '2025-09-10T09:00:00Z', StartDateTimeZone = 'UTC', EndDateTime = '2025-09-10T10:00:00Z', EndDateTimeZone = 'UTC', Recurrences = 'RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20251231T235959Z|EXRULE:FREQ=WEEKLY;BYDAY=FR;UNTIL=20251231T235959Z|RDATE:20251225T090000Z|EXDATE:20251224T090000Z', RemindersUseDefault = 'false', ReminderOverrides = 'EventReminders#Temp', Attendees = 'EventAttendees#Temp', AttachmentsFileUrls = 'https://example.com/file1|https://example.com/file2', ConferenceDataCreateNewRequest = 'true', ConferenceDataConferenceSolutionType = 'hangoutsMeet'
Temp table schemas
The following are the column schemas for the #Temp tables that can be passed to ImportEvent inputs. Create and populate them implicitly by inserting into TableName#Temp as shown in the examples above.
EventReminders#Temp (used by ReminderOverrides) schema info:
| Column Name | Type | Required | Description |
| Method | string | true | The method used by this reminder. |
| Minute | string | true | Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes). |
EventAttendees#Temp (used by Attendees) schema info:
| Column Name | Type | Required | Description |
| DisplayName | string | false | The attendee's name. |
| string | true | The attendee's email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322. Required when adding an attendee. | |
| Comment | string | false | The attendee's response comment. |
| Optional | boolean | false | Whether the attendee is optional. |
| AdditionalGuests | integer | false | Number of additional guests. |
| Resource | boolean | false | Whether the attendee is a resource. |
| ResponseStatus | string | false | The attendee response status. |
| Organizer | boolean | false | Whether the attendee is the organizer of the event. |
ConferenceDataEntryPoints#Temp (used by ConferenceDataEntryPoints) schema info:
| Column Name | Type | Required | Description |
| AccessCode | string | false | The access code to access the conference. When creating new conference data, populate only the subset of {MeetingCode, AccessCode, Passcode, Password, Pin} fields that match the terminology that the conference provider uses. |
| EntryPointType | string | true | The type of the conference entry point. |
| Label | string | false | The label for the URI. Visible to end users. |
| MeetingCode | string | false | The meeting code to access the conference. When creating new conference data, populate only the subset of {MeetingCode, AccessCode, Passcode, Password, Pin} fields that match the terminology that the conference provider uses. |
| Passcode | string | false | The passcode to access the conference. When creating new conference data, populate only the subset of {MeetingCode, AccessCode, Passcode, Password, Pin} fields that match the terminology that the conference provider uses. |
| Password | string | false | The password to access the conference. When creating new conference data, populate only the subset of {MeetingCode, AccessCode, Passcode, Password, Pin} fields that match the terminology that the conference provider uses. |
| PIN | string | false | The PIN to access the conference. When creating new conference data, populate only the subset of {MeetingCode, AccessCode, Passcode, Password, Pin} fields that match the terminology that the conference provider uses. |
| URI | string | true | The URI of the entry point. |
Input
| Name | Type | Required | Description |
| CalendarId | String | True | The calendar identifier where the event will be imported.If you want to access the primary calendar of the currently logged in user, use the 'primary' keyword. |
| ConferenceDataVersion | Integer | False | Version number indicating whether conference data should be included in the response. |
| SupportsAttachments | Boolean | False | Whether API client supports event attachments. When true, event with attachments is returned; otherwise, attachments are stripped. |
| ICalUID | String | True | Event unique identifier as defined in RFC5545. |
| Summary | String | False | Title of the event. |
| Status | String | False | Status of the event. |
| Visibility | String | False | Visibility of the event. |
| Transparency | String | False | Whether the event blocks time on the calendar. |
| Description | String | False | Description of the event. |
| Location | String | False | Geographic location of the event. |
| ColorId | String | False | Color ID of the event. |
| Attendees | String | False | The attendees of the event. Accepts only temporary table or JSON inputs. |
| AttachmentsFileUrls | String | False | Pipe-Seperated list of attachments file urls. |
| AttendeesOmitted | Boolean | False | Whether attendees may have been omitted from the event's representation. |
| GuestsCanInviteOthers | Boolean | False | Whether attendees other than the organizer can invite others to the event. |
| GuestsCanModify | Boolean | False | Whether attendees other than the organizer can modify the event. |
| GuestsCanSeeOtherGuests | Boolean | False | Whether attendees other than the organizer can see who the event's attendees are. |
| Sequence | Integer | False | Sequence number as per iCalendar. |
| StartDate | Date | False | Start date (for all-day events). |
| StartDateTime | String | False | Start date/time (RFC3339). |
| StartDateTimeZone | String | False | Time zone of the start (e.g., 'UTC', 'America/New_York'). |
| EndDate | Date | False | End date (for all-day events). |
| EndDateTime | String | False | End date/time (RFC3339). |
| EndDateTimeZone | String | False | Time zone of the end. |
| Recurrences | String | False | Pipe-separated List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field. |
| SourceTitle | String | False | Title of the source; for example a title of a web page or an email subject. |
| SourceUrl | String | False | URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS. |
| RemindersUseDefault | Boolean | False | Whether the calendar's default reminders apply. |
| ReminderOverrides | String | False | If the event doesn't use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5. Accepts only temporary table or JSON inputs. |
| OrganizeName | String | False | The organizer name. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. |
| OrganizerEmail | String | False | The organizer's email address, if available. It must be a valid email address as per RFC5322. |
| ConferenceDataCreateNewRequest | Boolean | False | Whether a new conference solution should be created, or an existing one should be used. If set to true only the ConferenceDataConferenceSolutionType will be considered of the Conference Data inputs. |
| ConferenceDataConferenceId | String | False | The ID of the conference. The ID value is formed differently for each conference solution type: hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc. addOn: ID is defined by the third-party provider. |
| ConferenceDataNotes | String | False | Additional notes to display to user. |
| ConferenceDataSignature | String | False | The signature of the conference data. Generated on the server side. |
| ConferenceDataConferenceSolutionType | String | False | The conference solution type. |
| ConferenceDataConferenceSolutionIconUri | String | False | The user-visible icon for this solution. |
| ConferenceDataConferenceSolutionName | String | False | The user-visible solution name. |
| ConferenceDataEntryPoints | String | False | Information about individual conference entry points, such as URLs or phone numbers. All of them must belong to the same conference. Accepts only temporary table or JSON inputs. |
Result Set Columns
| Name | Type | Description |
| EventId | String | The identifier of the imported event. |
| Success | String | Indicates whether the operation was successful. |