-
Notifications
You must be signed in to change notification settings - Fork 0
Users Calendars Events
- API documentation
- Python Regular Expressions Search function
- Collections of Users
- Definitions
- Recurrence rules
- Event colors
- Calendar selection
- Event selection
- Add and import calendar events
- Update calendar events
- Specify calendar attendees with JSON data
- Delete selected calendar events
- Delete all calendar events
- Move calendar events to another calendar
- Empty calendar trash
- Display calendar events
- Update calendar event attendees
- https://developers.google.com/calendar/v3/reference/events
- https://developers.google.com/calendar/v3/reference/events/import
<UserTypeEntity>
-
Command data from Google Docs/Sheets
gdoc <UserGoogleDoc>
andgsheet <UserGoogleSheet>
<Year> ::= <Digit><Digit><Digit><Digit>
<Month> ::= <Digit><Digit>
<Day> ::= <Digit><Digit>
<Hour> ::= <Digit><Digit>
<Minute> ::= <Digit><Digit>
<Second> ::= <Digit><Digit>
<MilliSeconds> ::= <Digit><Digit><Digit>
<Date> ::=
<Year>-<Month>-<Day> |
(+|-)<Number>(d|w|y) |
never|
today
<DateTime> ::=
<Year>-<Month>-<Day>(<Space>|T)<Hour>:<Minute> |
(+|-)<Number>(m|h|d|w|y) |
never|
now|today
<Time> ::=
<Year>-<Month>-<Day>(<Space>|T)<Hour>:<Minute>:<Second>[.<MilliSeconds>](Z|(+|-(<Hour>:<Minute>))) |
(+|-)<Number>(m|h|d|w|y) |
never|
now|today
<TimeZone> ::= <String>
See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
<JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
<DomainName> ::= <String>(.<String>)+
<EmailAddress> ::= <String>@<DomainName>
<EmailAddressList> ::= "<EmailAddress>(,<EmailAddress>)*"
<EmailAddressEntity> ::=
<EmailAddressList>|<FileSelector>|<CSVFileSelector>|
<CSVkmdSelector>|<CSVDataSelector>
<CalendarItem> ::= <EmailAddress>
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
<CourseAlias> ::= <String>
<CourseID> ::= <Number>|d:<CourseAlias>
<CourseIDList> ::= "<CourseID>(,<CourseID>)*"
<CourseState> ::= active|archived|provisioned|declined
<CourseStateList> ::= all|"<CourseState>(,<CourseState>)*"
<ResourceID> ::= <String>
<ResourceIDList> ::= "<ResourceID>(,<ResourceID>)*"
<UniqueID> ::= id:<String>
<UserItem> ::= <EmailAddress>|<UniqueID>|<String>
<CalendarACLRole> ::=
editor|freebusy|freebusyreader|owner|reader|writer
<CalendarSelectProperty> ::=
minaccessrole <CalendarACLRole>|
showdeleted|
showhidden
<UserCalendarEntity> ::=
allcalendars|
primary|
<EmailAddress>|
<UniqueUD>|
(courses <CourseIDList>)|
((courses_with_teacher <UserItem>)|my_courses_as_teacher
[coursestates <CourseStateList>])|
((courses_with_student <UserItem>)|my_courses_as_student
[coursestates <CourseStateList>])|
(resource <ResourceID>)|
(resources <ResourceIDList>)|
((calendars <CalendarList>)|<FileSelector>|<CSVFileSelector>|
<CSVkmdSelector>|<CSVDataSelector>)|
<CalendarSelectProperty>+
<EventAttachmentsSubfieldName> ::=
attachments.fileid|
attachments.fileurl|
attachments.iconlink|
attachments.mimetype|
attachments.title
<EventAttendeesSubfieldName> ::=
attendees.additionalguests|
attendees.comment|
attendees.displayname|
attendees.email|
attendees.id|
attendees.optional|
attendees.organizer|
attendees.resource|
attendees.responseStatus|
attendees.self
<EventConferenceDataSubfieldName> ::=
conferencedata.conferenceid|
conferencedata.conferencesolution|
conferencedata.createrequest|
conferencedata.entrypoints|
conferencedata.notes|
conferencedata.signature
<EventCreatorSubfieldName> ::=
creator.displayname|
creator.email|
creator.id|
creator.self
<EventOrganizerSubfieldName> ::=
organizer.displayname|
organizer.email|
organizer.id|
organizer.self
<EventFieldName> ::=
anyonecanaddself|
attachments|
<EventAttachmentsSubfieldName>|
attendees|
<EventAttendeesSubfieldName>|
attendeesomitted|
colorid|
conferencedata|
<EventConferenceDataSubfieldName>|
created|
creator|
<EventCreatorSubfieldName>|
description|
end|
endtimeunspecified|
extendedproperties|
eventtype|
gadget|
guestscaninviteothers|
guestscanmodify|
guestscanseeotherguests|
hangoutlink|
htmllink|
icaluid|
id|
location|
locked|
organizer|
<EventOrganizerSubfieldName>|
originalstarttime|
privatecopy|
recurrence|
recurringeventid|
reminders|
sequence|
source|
start|
status|
summary|
transparency|
updated|
visibility
<EventFieldNameList> ::= "<EventFieldName>(,<EventFieldName>)*"
<AttendeeAttendance> ::= optional|required
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
<EventSelectProperty> ::=
(after|starttime|timemin <Time>)|
(before|endtime|timemax <Time>)|
(query <QueryCalendar>)|
(privateextendedproperty <String>)|
(sharedextendedproperty <String>)|
showdeletedevents|
showhiddeninvitations|
singleevents|
(updatedmin <Time>)
<EventMatchProperty> ::=
(matchfield attendees <EmailAddressEntity>)|
(matchfield attendeespattern <RegularExpression>)|
(matchfield attendeesstatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>)|
(matchfield creatoremail <RegularExpression>)|
(matchfield creatorname <RegularExpression>)|
(matchfield description <RegularExpression>)|
(matchfield hangoutlink <RegularExpression>)|
(matchfield location <RegularExpression>)|
(matchfield organizeremail <RegularExpression>)|
(matchfield organizername <RegularExpression>)|
(matchfield status <RegularExpression>)|
(matchfield summary <RegularExpression>)|
(matchfield transparency <RegularExpression>)|
(matchfield visibility <RegularExpression>)
<EventIDEntity> ::=
(id|eventid <EventId>) |
(event|events <EventIdList> |
<FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVSubkeySelector> | <CSVDataSelector>)
<EventSelectEntity> ::=
(<EventSelectProperty>+ <EventMatchProperty>*)
<EventEntity> ::=
<EventIDEntity> | <EventSelectEntity>
<EventColorIndex> ::= <Number in range 1-11>
<EventColorName> ::=
banana|basil|blueberry|flamingo|graphite|grape|
lavender|peacock|sage|tangerine|tomato
<PropertyKey> ::= <String>
<PropertyValue> ::= <String>
<TimeZone> ::= <String>
<EventAttribute> ::=
(anyonecanaddself [<Boolean>])|
(attachment <String> <URL>)|
(attendee <EmailAddress>)|
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
available|
(color <EventColorName>)|
(colorindex|colorid <EventColorIndex>)|
(description <String>)|
(end (allday <Date>)|<Time>)|
(guestscaninviteothers <Boolean>)|
guestscantinviteothers|
(guestscanmodify <Boolean>)|
(guestscanseeotherguests <Boolean>)|
guestscantseeotherguests|
hangoutsmeet|
<JSONData>|
(jsonattendees [charset <Charset>] <String>)|
(jsonattendees file <FileName> [charset <Charset>])|
(location <String>)|
(noreminders|(reminder email|popup <Number>))|
(optionalattendee <EmailAddress>)|
(originalstart|originalstarttime (allday <Date>)|<Time>)|
(privateproperty <PropertyKey> <PropertyValue>)|
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
(reminder <Number> email|popup))|
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
(sequence <Integer>)|
(sharedproperty <PropertyKey> <PropertyValue>)|
(source <String> <URL>)|
(start (allday <Date>)|<Time>)|
(status confirmed|tentative|cancelled)|
(summary <String>)|
tentative|
(timezone <TimeZone>)|
(transparency opaque|transparent)|
(visibility default|public|private)
The following attributes are equivalent:
available - transparency transparent
guestscantinviteothers - guestscaninviteothers False
guestscantseeothers - guestscanseeotherguests False
tentative - status tentative
<EventImportAttribute> ::=
<EventAttribute>|
(organizername <String>)|
(organizeremail <EmailAddress>)
<EventUpdateAttribute> ::=
<EventAttribute>|
clearattendees|
clearattachments|
clearhangoutsmeet|
(clearprivateproperty <PropertyKey>)|
(clearsharedproperty <PropertyKey>)|
(removeattendee <EmailAddress>)|
(replacedescription <RegularExpression> <String>)|
(selectremoveattendees <UserTypeEntity>)
<EventNotificationAttribute> ::=
notifyattendees|(sendnotifications <Boolean>)|(sendupdates all|enternalonly|none)
The following attributes are equivalent:
notifyattendees - sendupdates all
sendnotifications false - sendupdates none
sendnotifications true - sendupdates all
<EventDisplayProperty> ::=
(alwaysincludeemail)|
(icaluid <String>)|
(maxattendees <Integer>)|
(orderby starttime|updated)|
(timezone <TimeZone>)
Recurring events require a rule: recurrence <RRULE, EXRULE, RDATE and EXDATE line>
This is dense reading; a simpler approach is to define a test event in Google Calendar with
the recurrence rule that you want, then use gam calendar <EmailAddress> info events eventid <EventId>
to get the recurrence rule and use it in subsequent commands.
The event color grid presented in calendar.google.com and <EventColorIndex>
are related like this:
11:tomato 4:flamingo
6:tangerine 5:banana
2:sage 10:basil
7:peacock 9:blueberry
1:lavender 3:grape
8:graphite
These are the possible values for <UserCalendarEntity>
.
-
allcalendars
- All calendars in a user's calendar list -
primary
- The user's primary calendar -
<EmailAddress>
- The address of a calendar in a user's calendar list -
<UniqueID>
- The uniqueid of a calendar in a user's calendar list -
courses <CourseIDList>
- The calendars associated with a list of courses -
courses_with_teacher <UserItem>
- The calendars associated with courses with<UserItem>
as a teacher -
my_courses_as_teacher
- The calendars associated with the User from<UserTypeEntity>
as a teacher -
courses_with_student <UserItem>
- The calendars associated with courses with<UserItem>
as a student -
my_courses_as_student
- The calendars associated with the User from<UserTypeEntity>
as a student -
coursestates <CourseStateList>
- Used with the previous four options to select courses in a particular state; the default is all -
resource <ResourceID>
- The calendar associated with a resource ID -
resources <ResourceIDList>
- The calendars associated with a list of resource IDs -
calendars (<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>)
- A collection of calendars: Collections of Items -
<CalendarSelectProperty>+
- The calendars in a user's calendar list with the specified properites
These are the possible values for <EventEntity>
; you either specify event IDs or properties used to select events.
If none of the following options are selected, all events are selected.
-
id|eventid <EventId>
- A single event ID -
event|events <EventIdList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVSubkeySelector> | <CSVDataSelector>)
- A collection of event IDs: Collections of Items -
<EventSelectProperty>* <EventMatchProperty>*
- Properties used to select events
The Google Calendar API processes <EventSelectProperty>*
; you may specify none or multiple properties.
-
after|starttime|timemin <Time>
- Lower bound (inclusive) for an event's end time to filter by. If timeMax is set, timeMin must be smaller than timeMax. -
before|endtime|timemax <Time>
- Upper bound (exclusive) for an event's start time to filter by. If timeMin is set, timeMax must be greater than timeMin. -
query <QueryCalendar>
- Free text search terms to find events that match these terms in any field, except for extended properties -
privateextendedproperty <String>
- A required private property;<String>
must be of the formpropertyName=value
-
sharedextendedproperty <String>
- A required shared property;<String>
must be of the formpropertyName=value
-
showdeletedevents
- Whether to include deleted events (with status equals "cancelled") in the result -
showhiddeninvitations
- Whether to include hidden invitations in the result -
singleevents
- Whether to expand recurring events into instances and only return single one-off events and instances of recurring events, but not the underlying recurring events themselves -
updatedmin <Time>
- Lower bound for an event's last modification time (as a RFC3339 timestamp) to filter by. When specified, entries deleted since this time will always be included regardless of showdeletedevents
GAM processes <EventMatchProperty>*
; you may specify none or multiple properties.
-
matchfield attendees <EmailAddressEntity>
- All of the attendees in<EmailAddressEntity>
must be present -
matchfield attendeespattern <RegularExpression>
- Some attendee must match<RegularExpression>
-
matchfield attendeesstatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>
- All of the attendees in<EmailAddressEntity>
must be present and must have the specified values.-
<AttendeeAttendance>
- Default isrequired
-
<AttendanceStatus>
- Default isneedsaction
-
-
matchfield creatoremail <RegularExpression>
- The creator email address must match<RegularExpression>
-
matchfield creatorname <RegularExpression>
- The creator name must match<RegularExpression>
-
matchfield description <RegularExpression>
- The description (summary) must match<RegularExpression>
-
matchfield location <RegularExpression>
- The location must match<RegularExpression>
-
matchfield organizeremail <RegularExpression>
- The organizer email address must match<RegularExpression>
-
matchfield organizername <RegularExpression>
- The orgainzer name must match<RegularExpression>
-
matchfield status <RegularExpression>
- The summary must match<RegularExpression>
. The API documented values are:confirmed
tentative
cancelled
-
matchfield summary <RegularExpression>
- The summary must match<RegularExpression>
-
matchfield transparency <RegularExpression>
- The summary must match<RegularExpression>
. The API documented values are:-
opaque
- Busy. The API does not seem to return this value; use"(^$)|opaque"
to match no value oropaque
. -
transparent
- Free/Available
-
-
matchfield visibility <RegularExpression>
- The summary must match<RegularExpression>
. The API documented values are:-
default
- The API does not seem to return this value; use"(^$)|default"
to match no value ordefault
. -
public
- The API does not seem to return this value if it is the default; use"(^$)|public"
to match no value orpublic
. -
private
- The API does not seem to return this value if it is the default; use"(^$)|private"
to match no value orprivate
. confidential
-
gam <UserTypeEntity> add event <UserCalendarEntity> [id <String>] <EventAttribute>+ [<EventNotificationAttribute>]
gam <UserTypeEntity> import event <UserCalendarEntity> icaluid <iCalUID> <EventImportAttribute>+
You can specify multiple attachments; <String>
is the title of the attachment and <URL>
is a sharable link from Google Drive.
You must specify all attachments in each command, you can not incrementally add attachments.
Importing events is similar to adding events; the principal difference
is that you must specify an iCalUID
. All instances of recurring events will have the same
iCalUID
but different EventIDs
. The import command supports two new attributes to set the
event organizer, but the API doesn't seem to honor the values; the organizer is set to
the calendar owner.
gam <UserTypeEntity> update events <UserCalendarEntity> [<EventEntity>] <EventUpdateAttribute>+ [<EventNotificationAttribute>]
If <EventEntity>
is not specified, all events in <UserCalendarEntity>
are selected. This is not typically used
unless you're trying to change a basic <EventAttribute>
, e.g., color
, on all events.
You can clear/modify existing attributes:
-
clearattachments
- Delete all attachments -
clearhangoutsmeet
- Clear Hangouts/Meet link -
clearprivateproperty <PropertyKey>
- Clear private properties -
clearsharedproperty <PropertyKey>
- Clear shared properties -
replacedescription <RegularExpression> <String>
- Modify the description
You can specify attendees in the following ways:
-
attendee <EmailAddress>
- The attendee attendance is required with status `needsaction' -
optionalattendee <EmailAddress>
- The attendee attendance is optional with status `needsaction' -
attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>
- One attendee- If
<AttendeeAttendance>
is not specified, the attendee is required to attend - If
<AttendeeStatus>
is not specified,needsaction
is chosen
- If
jsonattendees [charset <Charset>] <String>
jsonattendees file <FileName> [charset <Charset>]
-
selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>
- Multiple attendees- If
<AttendeeAttendance>
is not specified, all attendees are required to attend - If
<AttendeeStatus>
is not specified,needsaction
is chosen
- If
For <UserTypeEntity>
See: Collections of Users
The default behavior of gam calendar <CalendarEntity> update events
has been changed regarding attendees.
In versions of GAM before 5.02.00
, updating attendees in calendar events was complicated because you had to
supply the complete attendee list even if you just wanted incremental changes.
The default behavior now is to allow incremental changes to the attendees list;
the current attendee list is downloaded and the specified changes are applied.
The replacemode
option invokes the previous behavior from versions before 5.02.00
; the current attendee list is replaced.
You can add attendees in the following ways:
-
attendee <EmailAddress>
- The attendee attendance is required with status `needsaction' -
optionalattendee <EmailAddress>
- The attendee attendance is optional with status `needsaction' -
attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>
- One attendee- If
<AttendeeAttendance>
is not specified, the attendee is required to attend - If
<AttendeeStatus>
is not specified,needsaction
is chosen
- If
jsonattendees [charset <Charset>] <String>
jsonattendees file <FileName> [charset <Charset>]
-
selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>
- Multiple attendees- If
<AttendeeAttendance>
is not specified, all attendees are required to attend - If
<AttendeeStatus>
is not specified,needsaction
is chosen
- If
You can remove attendees in the following ways:
-
clearattendees
- Clear all current attendees from the attendee list -
removeattendee <EmailAddress>
- Remove a single attendee from the attendee list -
selectremoveattendees <UserTypeEntity>
- Remove a selected collection of attendees from the attendee list
For <UserTypeEntity>
See: Collections of Users
You can predefine lists of attendees and use them when creating/updating events. If you set responseStatus
to accepted
, no notifications are sent.
$ more attendees.json
{"attendees": [{"email": "[email protected]", "responseStatus": "needsAction", "optional": "True"}, {"email": "[email protected]", "responseStatus": "accepted"}, {"email": "[email protected]", "responseStatus": "accepted"}]}
You can use output the attendee information for an event in a calendar and use that data when defining other events.
$ gam redirect stdout ./attendees.json calendar [email protected] info event id 0000h8kk7c9o2tonk73hu2zzzz fields attendees formatjson
$ more attendees.json
{"calendarId": "[email protected]", "event": {"attendees": [{"email": "[email protected]", "responseStatus": "accepted"}, {"email": "[email protected]", "responseStatus": "accepted"}], "id": "0000h8kk7c9o2tonk73hu2zzzz"}}
Use jsonattendees file ./attendees.json
in create/update event
.
gam <UserTypeEntity> delete events <UserCalendarEntity> [<EventEntity>] [doit] [<EventNotificationAttribute>]
gam <UserTypeEntity> purge events <UserCalendarEntity> [<EventEntity>] [doit] [<EventNotificationAttribute>]
If <EventEntity>
is not specified, all events in <UserCalendarEntity>
are selected. This is not typically used.
No events are deleted unless you specify the doit
option; omit doit
to verify that you properly selected the events to delete.
When events are deleted from a calendar, they are moved to the calendar's trash and are only permanently deleted (purged) after 30 days. Following a suggestion here (https://stackoverflow.com/questions/41043053/how-to-empty-calendar-trash-via-google-services) you can permanently delete calendar events. This is achieved by creating a temporary calendar, deleting the events, moving the deleted events to the temporary calendar and then deleting the temporary calendar.
For a user's primary calendar:
gam <UserTypeEntity> wipe events primary
For non-primary calendars:
gam <UserTypeEntity> delete events <UserCalendarEntity> [doit] [<EventNotificationAttribute>]
No events are deleted unless you specify the doit
option; omit doit
to verify that you properly selected the events to delete.
Generally you won't move all events from one calendar to another; typically, you'll move events created by the event creator
using matchfield creatoremail <RegularExpression>
in conjunction with other <EventSelectProperty>
and <EventMatchProperty>
options.
gam <UserTypeEntity> move events <UserCalendarEntity> [<EventEntity>] destination|to <CalendarItem> [<EventNotificationAttribute>]
A user signed in to Google Calendar can empty the calendar trash but there is no direct API support for this operation. To empty the calendar trash a temporary calendar is created, the deleted events are moved to the temporary calendar and then the temporary calendar is deleted.
gam <UserTypeEntity> empty calendartrash <UserCalendarEntity>
gam <UserTypeEntity> info events <UserCalendarEntity> [<EventEntity>] [maxinstances <Number>]
[fields <EventFieldNameList>] [showdayofweek]
[formatjson]
In <EventEntity>
, any <EventSelectProperty>
options must precede all other options.
-
maxinstances -1
- Default, display base event -
maxinstances 0
- Display all instances of a recurring event -
maxinstances N
- Display first N instances of a recurring event
showdayofweek
displays dayOfWeek
when event start and end times are displayed.
By default, Gam displays the information as an indented list of keys and values.
-
formatjson
- Display the fields in JSON format.
gam <UserTypeEntity> show events <UserCalendarEntity> [<EventSelectEntity>] <EventDisplayProperty>*
[fields <EventFieldNameList>] [showdayofweek]
[countsonly] [formatjson]
In <EventSelectEntity>
, any <EventSelectProperty>
options must precede all other options.
By default, only the base event of a recurring event is displayed. Use the <EventSelectProperty>
option singleevents
to display all instances of a recurring event.
<EventDisplayProperty> orderby starttime
is only valid with <EventSelectProperty> singleevents
.
showdayofweek
displays dayOfWeek
when event start and end times are displayed.
By default, Gam displays the information as an indented list of keys and values.
-
formatjson
- Display the fields in JSON format.
By default, Gam displays event details, use countsonly
to display only the number of events. formatjson
does not apply in this case.
gam <UserTypeEntity> print events <UserCalendarEntity> [<EventSelectEntity>] <EventDisplayProperty>*
[fields <EventFieldNameList>] [showdayofweek]
[countsonly] [formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
In <EventSelectEntity>
, any <EventSelectProperty>
options must precede all other options.
By default, only the base event of a recurring event is displayed. Use the <EventSelectProperty>
option singleevents
to display all instances of a recurring event.
<EventDisplayProperty> orderby starttime
is only valid with <EventSelectProperty> singleevents
.
showdayofweek
displays columns start.dayOfWeek
and end.dayOfWeek
when event start and end times are displayed.
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
-
formatjson
- Display the fields in JSON format.
By default, Gam displays event details, use countsonly
to display only the number of events. formatjson
does not apply in this case.
By default, when writing CSV files, Gam uses a quote character of double quote "
. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
When using the formatjson
option, double quotes are used extensively in the data resulting in hard to read/process output.
The quotechar <Character>
option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
quotechar
defaults to gam.cfg/csv_output_quote_char
. When uploading CSV files to Google, double quote "
should be used.
gam <UserTypeEntity> update calattendees <UserCalendarEntity> <EventEntity> [anyorganizer]
[<EventNotificationAttribute>] [splitupdate] [doit]
(csv <FileName>|(gsheet <UserGoogleSheet>))*
(delete <EmailAddress>)*
(deleteentity <EmailAddressEntity>)*
(add <EmailAddress>)*
(addentity <EmailAddressEntity>)*
(addstatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)*
(addentitystatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>)*
(replace <EmailAddress> <EmailAddress>)*
(replacestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress> <EmailAddress>)*
(updatestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)*
(updateentitystatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>)*
By default, only events in <EventEntity>
organized by the user are selected.
-
anyorganizer|allevents
- All events in<EventEntity>
are selected. -
csv <FileName>
- A CSV file with no header row and two to four columns; the last two columns are optional-
<EmailAddress>,add,<AttendeeAttendance>,<AttendeeStatus>
- Add an attendee -
<EmailAddress>,delete
- Delete an attendee -
<EmailAddress>,<EmailAddress>,<AttendeeAttendance>,<AttendeeStatus>
- Replace the attendee in the first<EmailAddress>
with the attendee in the second<EmailAddress>
-
<EmailAddress>,update,<AttendeeAttendance>,<AttendeeStatus>
- Update an attendee
-
-
gsheet <UserGoogleSheet>
- A Google Sheet with no header row and two columns-
<EmailAddress>,add,<AttendeeAttendance>,<AttendeeStatus>
- Add an attendee -
<EmailAddress>,delete
- Delete an attendee -
<EmailAddress>,<EmailAddress>,<AttendeeAttendance>,<AttendeeStatus>
- Replace the attendee in the first<EmailAddress>
with the attendee in the second<EmailAddress>
-
<EmailAddress>,update,<AttendeeAttendance>,<AttendeeStatus>
- Update an attendee
-
-
delete <EmailAddress>
- Delete an attendee -
deleteentity <EmailAddressEntity>
- Delete multiple attendees -
add <EmailAddress>
- Add an attendee -
addentity <EmailAddressEntity>
- Add multiple attendees -
addstatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>
- Add an attendee -
addentitystatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>
- Add multiple attendees -
replace <EmailAddress> <EmailAddress>
- Replace the attendee in the first<EmailAddress>
with the attendee in the second<EmailAddress>
-
replacestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress> <EmailAddress>
- Replace the attendee in the first<EmailAddress>
with the attendee in the second<EmailAddress>
-
updatestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>
- Update an attendee -
updateentitystatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>
- Update multiple attendees
For add
, addstatus
and addentitystatus
:
-
<AttendeeAttendance>
- Default isrequired
-
<AttendanceStatus>
- Default isneedsaction
For replace
, replacestatus
, updatestatus
and updateentitystatus
:
-
<AttendeeAttendance>
- Default is no change from current value -
<AttendanceStatus>
- Default is no change from current value
By default, when you try to replace an email alias with its primary email, the Google Calendar API
detects that the underlying user ID is the same and doesn't change the address. The splitupdate
option causes GAM to make two updates to the attendee list; the first removes the alias and
the second adds the primary email.
The attendee changes are displayed but not processed unless doit
is specified.
Need more help? Ask on the GAM Discussion Group
Update History
Installation
- How to Install Advanced GAM
- How to Update Advanced GAM
- How to Upgrade from Standard GAM
- How to Upgrade from GAMADV-X or GAMADV-XTD
- Install GAM as Python Library
- GAMADV-XTD3 on Chrome OS Devices
- GAMADV-XTD3 on Android Devices
- Google Network Addresses
- HTTPS Proxy
- SSL Root CA Certificates
- How to Uninstall Advanced GAM
Configuration
- Authorization
- GAM Configuration
- Running GAMADV-XTD3 securely on a Google Compute Engine
- Using GAMADV-XTD3 with a delegated admin service account
- Using GAMADV-XTD3 with a YubiKey
Notes and Information
- Upgrade Benefits
- Questions? Visit the GAM Discussion Forum
- Scripts
- Other Resources
- Drive REST API v3
- BNF Syntax
- GAM Return Codes
- Python Regular Expressions
- Rclone
- Cross-Referenced Command Summary
Definitions
Command Processing
- Bulk Processing
- Command Line Parsing
- Command Logging and Progress
- Command data from Google Docs and Sheets
- CSV Input Filtering
- CSV Output Filtering
- Meta Commands and File Redirection
- Permission matches
- Tag Replace
- Todrive
Collections
Client Access
- Addresses
- Administrators
- Alert Center
- Aliases
- Calendars
- Calendars - Access
- Calendars - Events
- Chrome Auto Update Expiration Counts
- Chrome Browser Cloud Management
- Chrome Device Needs Attention Counts
- Chrome Installed Apps Counts
- Chrome Policies
- Chrome Printers
- Chrome Version Counts
- Chrome Version History
- ChromeOS Devices
- Classroom - Courses
- Classroom - Guardians
- Classroom - Invitations
- Classroom - Membership
- Cloud Channel
- Cloud Identity Devices
- Cloud Identity Groups
- Cloud Identity Groups - Membership
- Context Aware Access Levels
- Customer
- Domains
- Domains - Verification
- Domain People - Contacts & Profiles
- Domain Shared Contacts - Global Address List
- Email Audit Monitor
- Find File Owner
- Google Data Transfers
- Groups
- Groups - Membership
- Inbound SSO
- Licenses
- Mobile Devices
- Organizational Units
- Reports
- Reseller
- Resources
- Send Email
- Schemas
- Shared Drives
- Sites
- Users
- Unmanaged Accounts
- Users - Signout and Turn off 2-Step Verification
- Vault - Takeout
- Version and Help
Special Service Account Access
Service Account Access
- Users - Application Specific Passwords
- Users - Backup Verification Codes
- Users - Calendars
- Users - Calendars - Access
- Users - Calendars - Events
- Users - Classroom - Profile
- Users - Deprovision
- Users - Contacts
- Users - Contacts - Delegates
- Users - Data Studio
- Users - Drive - File Selection
- Users - Drive - Activity/Settings
- Users - Drive - Cleanup
- Users - Drive - Copy/Move
- Users - Drive - Files-Display
- Users - Drive - Files-Manage
- Users - Drive - Labels
- Users - Drive - Orphans
- Users - Drive - Ownership
- Users - Drive - Permissions
- Users - Drive - Revisions
- Users - Drive - Shortcuts
- Users - Drive - Transfer
- Users - Forms
- Users - Gmail - Delegates
- Users - Gmail - Filters
- Users - Gmail - Forwarding
- Users - Gmail - Labels
- Users - Gmail - Messages/Threads
- Users - Gmail - Profile
- Users - Gmail - S/MIME
- Users - Gmail - SendAs/Signature/Vacation
- Users - Gmail - Settings
- Users - Group Membership
- Users - Keep
- Users - People - Contacts & Profiles
- Users - Photo
- Users - Profile Sharing
- Users - Shared Drives
- Users - Spreadsheets
- Users - Tasks
- Users - Tokens