mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-07 07:41:38 +00:00
Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d588f7af43 | ||
|
|
01ce6319e8 | ||
|
|
49b6e03919 | ||
|
|
ac14037eb3 | ||
|
|
6135e5c2a2 | ||
|
|
540104161d | ||
|
|
3a235594b0 | ||
|
|
47eca41f2f | ||
|
|
eedb08513f | ||
|
|
8b4e38154e | ||
|
|
14e9b14bbf | ||
|
|
280805a917 | ||
|
|
5ce4ccdbeb | ||
|
|
a8f9fb7b81 | ||
|
|
aab8db0b84 | ||
|
|
5e6566618f | ||
|
|
415556603a | ||
|
|
f4566f4911 | ||
|
|
161a994dbf | ||
|
|
14f50e2433 | ||
|
|
a96db8cc88 | ||
|
|
ad45e31c27 | ||
|
|
9042bbaa30 | ||
|
|
1912765a83 | ||
|
|
0109e9b701 | ||
|
|
8973edf455 | ||
|
|
feb0a05d69 | ||
|
|
f7b5cdfb2b | ||
|
|
5b62fcb482 | ||
|
|
43dc914049 | ||
|
|
622d28af19 | ||
|
|
a0f0866551 | ||
|
|
d68d6711f5 | ||
|
|
d13001db1d | ||
|
|
0e393e0224 | ||
|
|
c1d13fa0f2 | ||
|
|
3445f648c0 | ||
|
|
677f683377 | ||
|
|
85e90ec56c | ||
|
|
53c9544456 | ||
|
|
be8ae5957b |
@@ -512,6 +512,8 @@ If an item contains spaces, it should be surrounded by ".
|
||||
<MatterItem> ::= <UniqueID>|<String>
|
||||
<MatterState> ::= open|closed|deleted
|
||||
<MeetConferenceName> ::= conferenceRecords/<String>
|
||||
<MeetID> ::= <String>
|
||||
Must match this Python Regular Expression: [a-z]{3}-[a-z]{4}-[a-z]{3}
|
||||
<MeetSpaceName> ::= spaces/<String> | <String>
|
||||
<MessageContent> ::=
|
||||
(message|textmessage|htmlmessage <String>)|
|
||||
@@ -527,6 +529,7 @@ If an item contains spaces, it should be surrounded by ".
|
||||
(gdoc|ghtml <UserGoogleDoc>)|
|
||||
(gcsdoc|gcshtml <StorageBucketObjectName>)
|
||||
<NumberOfSeats> ::= <Number>
|
||||
<NumberRange> ::= <Number>|(<Number>/<Number>)
|
||||
<OrgUnitID> ::= id:<String>
|
||||
<OrgUnitPath> ::= /|(/<String>)+
|
||||
<OrgUnitItem> ::= <OrgUnitID>|<OrgUnitPath>
|
||||
@@ -764,6 +767,7 @@ If an item contains spaces, it should be surrounded by ".
|
||||
<MimeTypeNameList> ::= "<MimeTypeName>(,<MimeTypeName>)*"
|
||||
<NamespaceList> ::= "<Namespace>(,<Namespace>)*"
|
||||
<NotesNameList> ::= "<NotesName>(,<NotesName>)*"
|
||||
<NumberRangeList> ::= "<NumberRange>(,<NumberRange>)*"
|
||||
<OrgUnitList> ::= "<OrgUnitItem>(,<OrgUnitItem>)*"
|
||||
<OtherContactsResourceNameList> ::= "<OtherContactsResourceName>(,<OtherContactsResourceName>)*"
|
||||
<PeopleResourceNameList> ::= "<PeopleResourceName>(,<PeopleResourceName>)*"
|
||||
@@ -1286,11 +1290,12 @@ Specify a collection of items by directly specifying them; the item type is dete
|
||||
|
||||
## Select a section from gam.cfg and process a GAM command using values from that section
|
||||
<Select> ::=
|
||||
select <Section> [save] [verify]
|
||||
select <Section> [save] [verify [variables <RESearchPattern>]]
|
||||
save
|
||||
Set section = <Section> in the [DEFAULT] section and write configuration data to gam.cfg
|
||||
verify
|
||||
Print the variable values for the selected section
|
||||
Use `variables <RESearchPattern>` to display variables with names selected by `<RESearchPattern>`
|
||||
Values are determined in this order: Selected section, DEFAULT section, Program default
|
||||
|
||||
## Display all of the sections in gam.cfg and mark the currently selected section with a *.
|
||||
@@ -1314,7 +1319,7 @@ csv_input_row_drop_filter, csv_input_row_drop_filter_mode and csv_input_row_limi
|
||||
## Set variables in gam.cfg.
|
||||
|
||||
<Config> ::=
|
||||
config (<VariableName> [=] <Value>)* [save] [verify]
|
||||
config (<VariableName> [=] <Value>)* [save] [verify [variables <RESearchPattern>]]
|
||||
<VariableName> [=] <Value>
|
||||
Set <VariableName> = <Value> in the current section
|
||||
All <VariableNames> except section are allowed.
|
||||
@@ -1323,6 +1328,7 @@ save
|
||||
Write configuration data to gam.cfg
|
||||
verify
|
||||
Print the variable values for the current section
|
||||
Use `variables <RESearchPattern>` to display variables with names selected by `<RESearchPattern>`.
|
||||
Values are determined in this order: Current section, DEFAULT section, Program default
|
||||
|
||||
## Terminate processing of a CSV or batch file when one of the subprocesses returns a matching return code.
|
||||
@@ -1821,8 +1827,10 @@ gam calendar|calendars <CalendarEntity> import event icaluid <iCalUID> <EventImp
|
||||
gam calendar|calendars <CalendarEntity> update events [<EventEntity>] [replacemode] <EventUpdateAttribute>+ [<EventNotificationAttribute>]
|
||||
[showdayofweek]
|
||||
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]
|
||||
gam calendar|calendars <CalendarEntity> delete events [<EventEntity>] [doit] [<EventNotificationAttribute>]
|
||||
gam calendar|calendars <CalendarEntity> purge events [<EventEntity>] [doit] [<EventNotificationAttribute>]
|
||||
gam calendar|calendars <CalendarEntity> delete events [<EventEntity>]
|
||||
# [batchsize <Integer>] [doit] [<EventNotificationAttribute>]
|
||||
gam calendar|calendars <CalendarEntity> purge events [<EventEntity>]
|
||||
# [batchsize <Integer>] [doit] [<EventNotificationAttribute>]
|
||||
gam calendar|calendars <CalendarEntity> wipe events
|
||||
gam calendar|calendars <CalendarEntity> move events [<EventEntity>] destination|to <CalendarItem> [<EventNotificationAttribute>]
|
||||
gam calendar|calendars <CalendarEntity> empty calendartrash
|
||||
@@ -2577,7 +2585,7 @@ gam print cros [todrive <ToDriveAttribute>*]
|
||||
[start <Date>] [end <Date>] [listlimit <Number>]
|
||||
[reverselists <CrOSListFieldNameList>]
|
||||
[timerangeorder ascending|descending] [showdvrsfp]
|
||||
(addcsvdata <FieldName> <String>)*
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
[showitemcountonly]
|
||||
@@ -2591,6 +2599,7 @@ gam print cros [todrive <ToDriveAttribute>*] select <CrOSTypeEntity>
|
||||
[start <Date>] [end <Date>] [listlimit <Number>]
|
||||
[reverselists <CrOSListFieldNameList>]
|
||||
[timerangeorder ascending|descending] [showdvrsfp]
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
[showitemcountonly]
|
||||
@@ -2602,7 +2611,7 @@ gam <CrOSTypeEntity> print cros [todrive <ToDriveAttribute>*]
|
||||
[start <Date>] [end <Date>] [listlimit <Number>]
|
||||
[reverselists <CrOSListFieldNameList>]
|
||||
[timerangeorder ascending|descending] [showdvrsfp]
|
||||
(addcsvdata <FieldName> <String>)*
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
[showitemcountonly]
|
||||
@@ -4004,6 +4013,7 @@ gam print groups [todrive <ToDriveAttribute>*]
|
||||
[types <GroupMemberTypeList>]
|
||||
[memberemaildisplaypattern|memberemailskippattern <REMatchPattern>]
|
||||
[convertcrnl] [delimiter <Character>] [sortheaders]
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
[showitemcountonly]
|
||||
|
||||
@@ -4045,6 +4055,7 @@ gam print group-members [todrive <ToDriveAttribute>*]
|
||||
[(recursive [noduplicates])|includederivedmembership] [nogroupemail]
|
||||
[peoplelookup|(peoplelookupuser <EmailAddress>)]
|
||||
[unknownname <String>] [cachememberinfo [Boolean]]
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
`gam show group-members
|
||||
[([domain|domains <DomainNameEntity>] ([member|showownedby <EmailItem>]|[(query <QueryGroup>)|(queries <QueryGroupList>)]))|
|
||||
@@ -4138,6 +4149,7 @@ gam print cigroups [todrive <ToDriveAttribute>*]
|
||||
[types <CIGroupMemberTypeList>]
|
||||
[memberemaildisplaypattern|memberemailskippattern <REMatchPattern>]
|
||||
[convertcrnl] [delimiter <Character>]
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
[showitemcountonly]
|
||||
|
||||
@@ -4166,6 +4178,7 @@ gam print cigroup-members [todrive <ToDriveAttribute>*]
|
||||
<CIGroupMembersFieldName>* [fields <CIGroupMembersFieldNameList>]
|
||||
[minimal|basic|full]
|
||||
[(recursive [noduplicates]) | includederivedmembership] [nogroupemail]
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
gam show cigroup-members
|
||||
[(cimember|ciowner <UserItem>)|(cigroup <GroupItem>)|(select <GroupEntity>)]
|
||||
@@ -4301,7 +4314,7 @@ gam update deviceuserstate <DeviceUserEntity> [clientid <String>]
|
||||
[customid <String>] [assettags clear|<AssetTagList>]
|
||||
[compliantstate|compliancestate compliant|noncompliant] [managedstate clear|managed|unmanaged]
|
||||
[healthscore very_poor|poor|neutral|good|very_good] [scorereason clear|<String>]
|
||||
(customvalue (bool|boolean <Boolean>)|(number <Integer>)|(string <String>))*
|
||||
(customvalue clear|(bool|boolean <String> <Boolean>)|(number <String> <Integer>)|(string <String> <String>))*
|
||||
|
||||
# Cloud Identity Policies
|
||||
|
||||
@@ -4585,39 +4598,54 @@ gam report usage customer [todrive <ToDriveAttribute>*]
|
||||
[convertmbtogb]
|
||||
|
||||
<ActivityApplicationName> ::=
|
||||
accessevaluation|
|
||||
accesstransparency|access|
|
||||
admin|
|
||||
admindataaction|
|
||||
assignments|
|
||||
calendar|calendars|
|
||||
chat|
|
||||
chrome|
|
||||
classroom|
|
||||
cloudsearch|
|
||||
contacts|
|
||||
contextawareaccess|
|
||||
datamigration|
|
||||
datastudio|
|
||||
directorysync|
|
||||
drive|doc|docs|
|
||||
gcp|cloud|
|
||||
geminiinworkspaceapps|gemini|geminiforworkspace|
|
||||
gmail|
|
||||
gplus|currents|google+|
|
||||
graduation|
|
||||
groups|group|
|
||||
groupsenterprise|enterprisegroups|
|
||||
jamboard|
|
||||
keep|
|
||||
ldap|
|
||||
login|logins|
|
||||
meet|hangoutsmeet|
|
||||
meethardware|
|
||||
mobile|devices|
|
||||
profile|
|
||||
rules|
|
||||
saml|
|
||||
takeout|
|
||||
tasks|
|
||||
token|tokens|oauthtoken|
|
||||
useraccounts|
|
||||
vault
|
||||
|
||||
gam report <ActivityApplicationName> [todrive <ToDriveAttribute>*]
|
||||
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
|
||||
[userisactor]
|
||||
[([start <Time>] [end <Time>])|(range <Time> <Time>)|
|
||||
yesterday|today|thismonth|(previousmonths <Integer>)]
|
||||
[filter <String> (filtertime<String> <Time>)*]
|
||||
[event|events <EventNameList>] [ip <String>]
|
||||
[groupidfilter <String>]
|
||||
[gmaileventtypes <NumberRangeList>]
|
||||
[groupidfilter <String>] [resourcedetailsfilter <String>]
|
||||
[maxactivities <Number>] [maxevents <Number>] [maxresults <Number>]
|
||||
[countsonly [bydate|summary] [eventrowfilter]]
|
||||
(addcsvdata <FieldName> <String>)* [shownoactivities]
|
||||
@@ -5425,7 +5453,7 @@ gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||
[wait <Integer>]
|
||||
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
||||
matter <MatterItem>
|
||||
corpus mail|groups
|
||||
corpus mail|groups
|
||||
[scope [all_data|held_data|unprocessed_data]]
|
||||
[(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone]
|
||||
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
|
||||
@@ -5587,7 +5615,7 @@ gam create vaultquery <MatterItem> [name <String>]
|
||||
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
||||
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
||||
(covereddata calllogs|textmessages|voicemails)*
|
||||
[<JSONData>]
|
||||
[<JSONData>]
|
||||
[shownames]
|
||||
[showdetails|returnidonly|formatjson]
|
||||
|
||||
@@ -5922,7 +5950,7 @@ gam print users [todrive <ToDriveAttribute>*]
|
||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)*
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[showitemcountonly]
|
||||
|
||||
Print fields for specified users.
|
||||
@@ -5939,7 +5967,7 @@ gam print users [todrive <ToDriveAttribute>*] select <UserTypeEntity>
|
||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)*
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[showitemcountonly]
|
||||
|
||||
gam <UserTypeEntity> print users [todrive <ToDriveAttribute>*]
|
||||
@@ -5954,7 +5982,7 @@ gam <UserTypeEntity> print users [todrive <ToDriveAttribute>*]
|
||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)*
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[showitemcountonly]
|
||||
|
||||
The first column will always be primaryEmail; the remaining field names will be sorted if allfields, basic, full or sortheaders is specified;
|
||||
@@ -6308,8 +6336,10 @@ gam <UserTypeEntity> import event <UserCalendarEntity> icaluid <iCalUID> <EventI
|
||||
gam <UserTypeEntity> update events <UserCalendarEntity> [<EventEntity>] [replacemode] <EventUpdateAttribute>+ [<EventNotificationAttribute>]
|
||||
[showdayofweek]
|
||||
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]
|
||||
gam <UserTypeEntity> delete events <UserCalendarEntity> [<EventEntity>] [doit] [<EventNotificationAttribute>]
|
||||
gam <UserTypeEntity> purge events <UserCalendarEntity> [<EventEntity>] [doit] [<EventNotificationAttribute>]
|
||||
gam <UserTypeEntity> delete events <UserCalendarEntity> [<EventEntity>]
|
||||
# [batchsize <Integer>] [doit] [<EventNotificationAttribute>]
|
||||
gam <UserTypeEntity> purge events <UserCalendarEntity> [<EventEntity>]
|
||||
# [batchsize <Integer>] [doit] [<EventNotificationAttribute>]
|
||||
gam <UserTypeEntity> wipe events <UserCalendarEntity>
|
||||
gam <UserTypeEntity> move events <UserCalendarEntity> [<EventEntity>] destination|to <CalendarItem> [<EventNotificationAttribute>]
|
||||
gam <UserTypeEntity> empty calendartrash <UserCalendarEntity>
|
||||
@@ -6824,7 +6854,12 @@ gam <UserTypeEntity> copy drivefile <DriveFileEntity>
|
||||
[skipids <DriveFileEntity>]
|
||||
[copysubfiles [<Boolean>]] [filenamematchpattern <REMatchPattern>]
|
||||
[filemimetype [not] <MimeTypeList>]
|
||||
[copysubfilesownedby any|me|others]
|
||||
[copysubfilesownedby
|
||||
any|me|others|
|
||||
users <EmailAddressList>|
|
||||
notusers <EmailAddressList>|
|
||||
regex <REMatchPattern>|
|
||||
notregex <REMatchPattern>]
|
||||
[copysubfolders [<Boolean>]] [foldernamematchpattern <REMatchPattern>]
|
||||
[copysubshortcuts [<Boolean>]] [shortcutnamematchpattern <REMatchPattern>]
|
||||
[duplicatefiles overwriteolder|overwriteall|duplicatename|uniquename|skip]
|
||||
@@ -7512,7 +7547,7 @@ gam <UserTypeEntity> print filelist [todrive <ToDriveAttribute>*]
|
||||
[showparentsidsaslist] [showpermissionslast]
|
||||
(orderby <DriveFileOrderByFieldName> [ascending|descending])* [delimiter <Character>]
|
||||
[stripcrsfromname]
|
||||
(addcsvdata <FieldName> <String>)*
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
gam <UserTypeEntity> print diskusage <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
||||
@@ -8286,7 +8321,7 @@ gam <UserItem> print meettranscripts <MeetConferenceName> [todrive <ToDriveAttri
|
||||
|
||||
<BiographyContent> ::=
|
||||
<String>|
|
||||
(file|textfile <FileName> [charset <Charset>])|
|
||||
(file|textfile <FileName> [charset <Charset>])|
|
||||
(gdoc <UserGoogleDoc>)
|
||||
|
||||
<PeopleContactAttribute> ::=
|
||||
|
||||
@@ -1,3 +1,107 @@
|
||||
7.31.06
|
||||
|
||||
Added option `batchsize <Integer>` to `gam calendar <CalendarEntity> delete|purge events` and
|
||||
`gam <UserTypeEntity> delete|purge events <UserCalendarEntity>` that causes GAM to delete events
|
||||
with batch API calls rather than with individual API calls.
|
||||
|
||||
7.31.05
|
||||
|
||||
Added option `variables <RESearchPattern>` to `gam select section <SectionName> verify` and `gam config verify`
|
||||
that causes GAM to only display variables with names selected by `<RESearchPattern>`.
|
||||
```
|
||||
gam select School verify variables "^(customer|domain)"
|
||||
Section: School
|
||||
customer_id = C03abc123
|
||||
domain = school.edu
|
||||
|
||||
gam config verify variables 'dir'
|
||||
Section: DEFAULT
|
||||
cache_dir = ~/GamConfig/gamcache ; /Users/gamteam/GamConfig/gamcache
|
||||
config_dir = ~/GamConfig ; /Users/gamteam/GamConfig
|
||||
drive_dir = ~/GamWork ; /Users/gamteam/GamWork
|
||||
gmail_cse_incert_dir = ~/GmailCSE/Certs ; /Users/gamteam/GmailCSE/Certs
|
||||
gmail_cse_inkey_dir = ~/GmailCSE/Keys ; /Users/gamteam/GmailCSE/Keys
|
||||
input_dir = .
|
||||
```
|
||||
|
||||
7.31.04
|
||||
|
||||
Fixed bug in `gam report admin|chrome` that caused to events to not be displayed.
|
||||
|
||||
Updated `gam <UserTypeEntity> print|show messages|threads ... query <QueryGmail>` to display the query.
|
||||
|
||||
7.31.03
|
||||
|
||||
Due to the following Calendar API update, the `gam <UserTypeEntity> transfer calendars` command has been removed.
|
||||
* See: https://developers.google.com/workspace/calendar/release-notes#October_27_2025
|
||||
Data ownership can be transferred in the Google Calendar UI.
|
||||
|
||||
7.31.02
|
||||
|
||||
Added the following options to `gam <UserTypeEntity> copy drivefile`
|
||||
to limit copying to those files owned by selected users.
|
||||
* `copysubfilesownedby users <EmailAddressList>` - Only files owned by users in `<EmailAddressList>` are copied.
|
||||
* `copysubfilesownedby notusers <EmailAddressList>` - Only files not owned by users in `<EmailAddressList>` are copied.
|
||||
* `copysubfilesownedby regex <REMatchPattern>` - Only files owned by users whose email addresses match `<REMatchPattern>` are copied.
|
||||
* `copysubfilesownedby notregex <REMatchPattern>` - Only files owned by users whose email addresses do not match `<REMatchPattern>` are copied.
|
||||
|
||||
7.31.01
|
||||
|
||||
Code cleanup for `addcsvdata <FieldName> <String>`.
|
||||
|
||||
7.31.00
|
||||
|
||||
Fixed bug in `gam report chrome (user <UserItem>)|(select <UserTypeEntity>)` where no activities were returned.
|
||||
`report chrome` does not use the parameter `userKey=<EmailAddress>` as do other applications but requires
|
||||
parameter `filter DEVICE_USER==<EmailAddress>`.
|
||||
|
||||
Updated `gam report admin (user <UserItem>)|(select <UserTypeEntity>)` to use parameter `filter USER_EMAIL==<EmailAddress>`
|
||||
to display activiities affecting the user `<EmailAddress>`. Use option `userisactor` to use the parameter `userKey=<EmailAddress>`
|
||||
that displays activities where user `<EmailAddress>` executed the command that generated the activity.
|
||||
|
||||
Fixed bug in `gam print cros|filelist|users ... (addcsvdata <FieldName> <String>)+ formatjson` where the `addcsvdata` columns
|
||||
were not displayed but the additional field values were included in the JSON data. Now, the `addcsvdata` columns
|
||||
are displayed but the additional field values are only included in the JSON data when option `includdecsvdatainjson` is specified.
|
||||
|
||||
Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print cigroups|groups`
|
||||
that adds additional columns of data to the CSV file output.
|
||||
|
||||
Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print cigroupmembere|group-members`
|
||||
that adds additional columns of data to the CSV file output.
|
||||
|
||||
7.30.05
|
||||
|
||||
Added option `gmaileventtypes <NumberRangeList>` to `gam report gmail` that can be used to limit the event types displayed.
|
||||
```
|
||||
<NumberRange> ::= <Number>|(<Number>/<Number>)
|
||||
<NumberRangeList> ::= "<NumberRange>(,<NumberRange>)*"
|
||||
|
||||
gam report gmail user user@domain.com gmaileventtypes 1,10/11
|
||||
```
|
||||
* See: https://developers.google.com/workspace/admin/reports/v1/appendix/activity/gmail
|
||||
|
||||
Updated sorting of column headers in `gam report <ActivityApplicationName>`.
|
||||
|
||||
7.30.04
|
||||
|
||||
Updated `gam report gmail` to avoid the following error when incomplete start/end time information is provided.
|
||||
```
|
||||
ERROR: Invalid request: Start time and end time should both be provided, and the scan duration should not be greater than 30 days.
|
||||
```
|
||||
* No time information provided - GAM sets `range -30d today`
|
||||
* Only `start <Time>` provided - GAM sets `end <Time>+30d`
|
||||
* Only `end <Time>` provided - GAM sets `start <Time>-30d`
|
||||
|
||||
7.30.03
|
||||
|
||||
Updated `gam report <ActivityApplicationName>` to reflect the changes described here:
|
||||
* See: https://workspaceupdates.googleblog.com/2025/12/google-workspace-audit-log-api.html
|
||||
|
||||
Added option `resourcedetailsfilter <String>` to `gam report <ActivityApplicationName>` described here:
|
||||
* See: https://developers.google.com/workspace/admin/reports/reference/rest/v1/activities/list#query-parameters
|
||||
|
||||
For `gam <UserTypeEntity> print <Objects>`, expanded the list of `<Objects>` covered by `gam.cfg csv_output_users_audit = True`.
|
||||
|
||||
7.30.02
|
||||
|
||||
Added option `conferencedata meet <MeetID>` to `<EventAttribute>` that allows specifying
|
||||
|
||||
1189
src/gam/__init__.py
1189
src/gam/__init__.py
File diff suppressed because it is too large
Load Diff
@@ -1286,6 +1286,7 @@ class GamCLArgs():
|
||||
OB_MOBILE_ENTITY = 'MobileEntity'
|
||||
OB_NETWORK_ID = 'networkID'
|
||||
OB_NAME = 'Name'
|
||||
OB_NUMBER_RANGE_LIST = 'NumberRangeList'
|
||||
OB_ORGANIZER_TYPE_LIST = 'OrganizerTypeList'
|
||||
OB_ORGUNIT_ENTITY = 'OrgUnitEntity'
|
||||
OB_ORGUNIT_ITEM = 'OrgUnitItem'
|
||||
|
||||
@@ -42,6 +42,7 @@ CANNOT_DELETE_PERMISSION = 'cannotDeletePermission'
|
||||
CANNOT_DELETE_PRIMARY_CALENDAR = 'cannotDeletePrimaryCalendar'
|
||||
CANNOT_DELETE_PRIMARY_SENDAS = 'cannotDeletePrimarySendAs'
|
||||
CANNOT_DELETE_RESOURCE_WITH_CHILDREN = 'cannotDeleteResourceWithChildren'
|
||||
CANNOT_MODIFY_ACL_OF_CALENDAR_OWNER = 'cannotModifyAclOfCalendarOwner'
|
||||
CANNOT_MODIFY_INHERITED_PERMISSION = 'cannotModifyInheritedPermission'
|
||||
CANNOT_MODIFY_INHERITED_TEAMDRIVE_PERMISSION = 'cannotModifyInheritedTeamDrivePermission'
|
||||
CANNOT_MODIFY_RESTRICTED_LABEL = 'cannotModifyRestrictedLabel'
|
||||
@@ -55,6 +56,7 @@ CANNOT_SHARE_GROUPS_WITHLINK = 'cannotShareGroupsWithLink'
|
||||
CANNOT_SHARE_USERS_WITHLINK = 'cannotShareUsersWithLink'
|
||||
CANNOT_SHARE_TEAMDRIVE_TOPFOLDER_WITH_ANYONEORDOMAINS = 'cannotShareTeamDriveTopFolderWithAnyoneOrDomains'
|
||||
CANNOT_SHARE_TEAMDRIVE_WITH_NONGOOGLE_ACCOUNTS = 'cannotShareTeamDriveWithNonGoogleAccounts'
|
||||
CANNOT_UNSUBSCRIBE_FROM_OWNED_CALENDAR = 'cannotUnsubscribeFromOwnedCalendar'
|
||||
CANNOT_UPDATE_PERMISSION = 'cannotUpdatePermission'
|
||||
CONDITION_NOT_MET = 'conditionNotMet'
|
||||
CONFLICT = 'conflict'
|
||||
@@ -179,6 +181,7 @@ TEAMDRIVES_SHARING_RESTRICTION_NOT_ALLOWED = 'teamDrivesSharingRestrictionNotAll
|
||||
TEAMDRIVES_SHORTCUT_FILE_NOT_SUPPORTED = 'teamDrivesShortcutFileNotSupported'
|
||||
TIME_RANGE_EMPTY = 'timeRangeEmpty'
|
||||
TRANSIENT_ERROR = 'transientError'
|
||||
UNIMPLEMENTED_ERROR = 'unimplementedError'
|
||||
UNKNOWN_ERROR = 'unknownError'
|
||||
UNSUPPORTED_LANGUAGE_CODE = 'unsupportedLanguageCode'
|
||||
UNSUPPORTED_SUPERVISED_ACCOUNT = 'unsupportedSupervisedAccount'
|
||||
@@ -405,6 +408,8 @@ class cannotDeletePrimarySendAs(Exception):
|
||||
pass
|
||||
class cannotDeleteResourceWithChildren(Exception):
|
||||
pass
|
||||
class cannotModifyAclOfCalendarOwner(Exception):
|
||||
pass
|
||||
class cannotModifyInheritedPermission(Exception):
|
||||
pass
|
||||
class cannotModifyInheritedTeamDrivePermission(Exception):
|
||||
@@ -431,6 +436,8 @@ class cannotShareTeamDriveTopFolderWithAnyoneOrDomains(Exception):
|
||||
pass
|
||||
class cannotShareTeamDriveWithNonGoogleAccounts(Exception):
|
||||
pass
|
||||
class cannotUnsubscribeFromOwnedCalendar(Exception):
|
||||
pass
|
||||
class cannotUpdatePermission(Exception):
|
||||
pass
|
||||
class conditionNotMet(Exception):
|
||||
@@ -671,6 +678,8 @@ class timeRangeEmpty(Exception):
|
||||
pass
|
||||
class transientError(Exception):
|
||||
pass
|
||||
class unimplementedError(Exception):
|
||||
pass
|
||||
class unknownError(Exception):
|
||||
pass
|
||||
class unsupportedLanguageCode(Exception):
|
||||
@@ -710,6 +719,7 @@ REASON_EXCEPTION_MAP = {
|
||||
CANNOT_DELETE_PRIMARY_CALENDAR: cannotDeletePrimaryCalendar,
|
||||
CANNOT_DELETE_PRIMARY_SENDAS: cannotDeletePrimarySendAs,
|
||||
CANNOT_DELETE_RESOURCE_WITH_CHILDREN: cannotDeleteResourceWithChildren,
|
||||
CANNOT_MODIFY_ACL_OF_CALENDAR_OWNER: cannotModifyAclOfCalendarOwner,
|
||||
CANNOT_MODIFY_INHERITED_PERMISSION: cannotModifyInheritedPermission,
|
||||
CANNOT_MODIFY_INHERITED_TEAMDRIVE_PERMISSION: cannotModifyInheritedTeamDrivePermission,
|
||||
CANNOT_MODIFY_RESTRICTED_LABEL: cannotModifyRestrictedLabel,
|
||||
@@ -723,6 +733,7 @@ REASON_EXCEPTION_MAP = {
|
||||
CANNOT_SHARE_USERS_WITHLINK: cannotShareUsersWithLink,
|
||||
CANNOT_SHARE_TEAMDRIVE_TOPFOLDER_WITH_ANYONEORDOMAINS: cannotShareTeamDriveTopFolderWithAnyoneOrDomains,
|
||||
CANNOT_SHARE_TEAMDRIVE_WITH_NONGOOGLE_ACCOUNTS: cannotShareTeamDriveWithNonGoogleAccounts,
|
||||
CANNOT_UNSUBSCRIBE_FROM_OWNED_CALENDAR: cannotUnsubscribeFromOwnedCalendar,
|
||||
CANNOT_UPDATE_PERMISSION: cannotUpdatePermission,
|
||||
CONDITION_NOT_MET: conditionNotMet,
|
||||
CONFLICT: conflict,
|
||||
@@ -843,6 +854,7 @@ REASON_EXCEPTION_MAP = {
|
||||
TEAMDRIVES_SHORTCUT_FILE_NOT_SUPPORTED: teamDrivesShortcutFileNotSupported,
|
||||
TIME_RANGE_EMPTY: timeRangeEmpty,
|
||||
TRANSIENT_ERROR: transientError,
|
||||
UNIMPLEMENTED_ERROR: unimplementedError,
|
||||
UNKNOWN_ERROR: unknownError,
|
||||
UNSUPPORTED_LANGUAGE_CODE: unsupportedLanguageCode,
|
||||
UNSUPPORTED_SUPERVISED_ACCOUNT: unsupportedSupervisedAccount,
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
- [Update an existing Service Account key](#update-an-existing-service-account-key)
|
||||
- [Replace all existing Service Account keys](#replace-all-existing-service-account-keys)
|
||||
- [Delete Service Account keys](#delete-service-account-keys)
|
||||
- [Upload a Service Account key to a service account with no keys](#upload-a-service-account-key-to-a-service-account-with-no-keys)
|
||||
- [Display Service Account keys](#display-service-account-keys)
|
||||
- [Upload a Service Account key to a service account without a valid private key](#upload-a-service-account-key-to-a-service-account-without-a-valid-private-key)
|
||||
- [Manage Service Account access](#manage-service-account-access)
|
||||
- [Full Service Account access](#full-service-account-access)
|
||||
- [Selective Service Account access](#selective-service-account-access)
|
||||
@@ -781,6 +781,14 @@ Here are some sample values:
|
||||
Create a new Service Account private key; all existing private keys remain valid.
|
||||
The `oauth2service.json` file is updated with the new private key.
|
||||
|
||||
This command requires that the current Service Account private key is valid, if you get the following error:
|
||||
```
|
||||
ERROR: 401: authError - Request had invalid authentication credentials.
|
||||
Expected OAuth 2 access token, login cookie or other valid authentication credential.
|
||||
See https://developers.google.com/identity/sign-in/web/devconsole-project.
|
||||
```
|
||||
see: [Upload a Service Account key to a service account without a valid private key](#upload-a-service-account-key-to-a-service-account-without-a-valid-private-key)
|
||||
|
||||
Keep a good record of where each Service Account key is used as the keys themselves do not record this information.
|
||||
|
||||
The two forms of the command are equivalent; the second form is used by Legacy GAM.
|
||||
@@ -809,6 +817,14 @@ The `oauth2service.json` file is updated with the new private key. If you had pr
|
||||
this `oauth2service.json` file to other users, you must redistribute the updated file as the private key
|
||||
in the distributed copies has been revoked.
|
||||
|
||||
This command requires that the current Service Account private key is valid, if you get the following error:
|
||||
```
|
||||
ERROR: 401: authError - Request had invalid authentication credentials.
|
||||
Expected OAuth 2 access token, login cookie or other valid authentication credential.
|
||||
See https://developers.google.com/identity/sign-in/web/devconsole-project.
|
||||
```
|
||||
see: [Upload a Service Account key to a service account without a valid private key](#upload-a-service-account-key-to-a-service-account-without-a-valid-private-key)
|
||||
|
||||
The two forms of the command are equivalent; the second form is used by Legacy GAM.
|
||||
```
|
||||
gam update sakey
|
||||
@@ -828,6 +844,14 @@ in the distributed copies has been revoked.
|
||||
|
||||
This command can be used if your Service Account keys have been compromised; all existing private keys are revoked.
|
||||
|
||||
This command requires that the current Service Account private key is valid, if you get the following error:
|
||||
```
|
||||
ERROR: 401: authError - Request had invalid authentication credentials.
|
||||
Expected OAuth 2 access token, login cookie or other valid authentication credential.
|
||||
See https://developers.google.com/identity/sign-in/web/devconsole-project.
|
||||
```
|
||||
see: [Upload a Service Account key to a service account without a valid private key](#upload-a-service-account-key-to-a-service-account-without-a-valid-private-key)
|
||||
|
||||
The two forms of the command are equivalent; the second form is used by Legacy GAM.
|
||||
```
|
||||
gam replace sakeys
|
||||
@@ -844,25 +868,20 @@ You can delete Service Accounts keys thus revoking access for that key. Generall
|
||||
delete a service account key for a distributed copy of an `oauth2service.json` file to disable
|
||||
that user's service account access.
|
||||
|
||||
This command requires that the current Service Account private key is valid, if you get the following error:
|
||||
```
|
||||
ERROR: 401: authError - Request had invalid authentication credentials.
|
||||
Expected OAuth 2 access token, login cookie or other valid authentication credential.
|
||||
See https://developers.google.com/identity/sign-in/web/devconsole-project.
|
||||
```
|
||||
see: [Upload a Service Account key to a service account without a valid private key](#upload-a-service-account-key-to-a-service-account-without-a-valid-private-key)
|
||||
|
||||
You can disable your current Service Account key if you specify the `doit` argument. This is your
|
||||
acknowledgement that you will have to manually create a new Service Account key in the Developer's Console
|
||||
or upload a new key with the `gam upload sakey` command.
|
||||
```
|
||||
gam delete sakeys <ServiceAccountKeyList>+ [doit]
|
||||
```
|
||||
## Upload a Service Account key to a service account with no keys
|
||||
There are two cases where you will use this command:
|
||||
* Your workspace is configured to disable service account private key uploads and you are creating a project.
|
||||
* All of your service account keys have been deleted, either manually or with the `gam delete sakeys` command.
|
||||
|
||||
The `oauth2service.json` file is updated with the new private key. If you had previously distributed
|
||||
any `oauth2service.json` file to other users, you must redistribute the updated file with the new key.
|
||||
```
|
||||
gam upload sakey [admin <EmailAddress>]
|
||||
(algorithm KEY_ALG_RSA_1024|KEY_ALG_RSA_2048)|
|
||||
(localkeysize 1024|2048|4096 [validityhours <Number>])|
|
||||
(yubikey yubikey_pin yubikey_slot AUTHENTICATION|SIGNATURE yubikey_serialnumber <Number>)
|
||||
```
|
||||
## Display Service Account keys
|
||||
There are system keys and user keys; user keys are what Gam uses; GCP uses system keys.
|
||||
|
||||
@@ -876,6 +895,19 @@ gam show sakeys [all|system|user]
|
||||
|
||||
The private key currently being used in `oauth2service.json` will be marked as `usedToAuthenticateThisRequest: True`.
|
||||
|
||||
## Upload a Service Account key to a service account without a valid private key
|
||||
There are two cases where you will use this command:
|
||||
* Your workspace is configured to disable service account private key uploads and you are creating a project.
|
||||
* All of your service account keys have been deleted, either manually or with the `gam delete sakeys` command.
|
||||
|
||||
The `oauth2service.json` file is updated with the new private key. If you had previously distributed
|
||||
any `oauth2service.json` file to other users, you must redistribute the updated file with the new key.
|
||||
```
|
||||
gam upload sakey [admin <EmailAddress>]
|
||||
(algorithm KEY_ALG_RSA_1024|KEY_ALG_RSA_2048)|
|
||||
(localkeysize 1024|2048|4096 [validityhours <Number>])|
|
||||
(yubikey yubikey_pin yubikey_slot AUTHENTICATION|SIGNATURE yubikey_serialnumber <Number>)
|
||||
```
|
||||
## Manage Service Account access
|
||||
|
||||
## Full Service Account access
|
||||
|
||||
@@ -409,6 +409,8 @@
|
||||
<MatterItem> ::= <UniqueID>|<String>
|
||||
<MatterState> ::= open|closed|deleted
|
||||
<MeetConferenceName> ::= conferenceRecords/<String>
|
||||
<MeetID> ::= <String>
|
||||
Must match this Python Regular Expression: [a-z]{3}-[a-z]{4}-[a-z]{3}
|
||||
<MeetSpaceName> ::= spaces/<String> | <String>
|
||||
<MessageContent> ::=
|
||||
(message|textmessage|htmlmessage <String>)|
|
||||
@@ -424,6 +426,7 @@
|
||||
(gdoc|ghtml <UserGoogleDoc>)|
|
||||
(gcsdoc|gcshtml <StorageBucketObjectName>)
|
||||
<NumberOfSeats> ::= <Number>
|
||||
<NumberRange> ::= <Number>|(<Number>/<Number>)
|
||||
<OrgUnitID> ::= id:<String>
|
||||
<OrgUnitPath> ::= /|(/<String>)+
|
||||
<OrgUnitItem> ::= <OrgUnitID>|<OrgUnitPath>
|
||||
@@ -564,11 +567,11 @@
|
||||
(tdreturnidonly [<Boolean>])|
|
||||
(tdshare <EmailAddress> commenter|reader|writer)*|
|
||||
(tdsheet (id:<Number>)|<String>)|
|
||||
(tdsheettimestamp [<Boolean>] [tdsheettimeformat <String>])
|
||||
(tdsheettimestamp [<Boolean>] [tdsheettimeformat <DateTimeFormat>])
|
||||
(tdsheettitle <String>)|
|
||||
(tdsubject <String>)|
|
||||
([tdsheetdaysoffset <Number>] [tdsheethoursoffset <Number>])|
|
||||
(tdtimestamp [<Boolean>] [tdtimeformat <String>]
|
||||
(tdtimestamp [<Boolean>] [tdtimeformat <DateTimeFormat>]
|
||||
[tddaysoffset <Number>] [tdhoursoffset <Number>])|
|
||||
(tdtimezone <TimeZone>)|
|
||||
(tdtitle <String>)|
|
||||
|
||||
@@ -38,6 +38,7 @@ Batch files can contain the following types of lines:
|
||||
* Blank lines - Ignored
|
||||
* \# Comment line - Ignored
|
||||
* gam \<GAMArgumentList\> - Execute a GAM command
|
||||
* File path arguments in \<GAMArgumentList\> should be enclosed in \"
|
||||
* commit-batch
|
||||
* GAM waits for all running GAM commands to complete
|
||||
* GAM continues
|
||||
|
||||
@@ -78,6 +78,8 @@ Client access works when accessing Resource calendars.
|
||||
<CSVkmdSelector> | <CSVDataSelector>
|
||||
See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items
|
||||
<iCalUID> ::= <String>
|
||||
<MeetID> ::= <String>
|
||||
Must match this Python Regular Expression: [a-z]{3}-[a-z]{4}-[a-z]{3}
|
||||
|
||||
<EventAttachmentsSubfieldName> ::=
|
||||
attachments.fileid|
|
||||
@@ -150,7 +152,8 @@ Client access works when accessing Resource calendars.
|
||||
endtimeunspecified|
|
||||
extendedproperties|
|
||||
eventtype|
|
||||
<EventFocusTimePropertiesSubfieldName>
|
||||
focustimeproperties|
|
||||
<EventFocusTimePropertiesSubfieldName>|
|
||||
gadget|
|
||||
guestscaninviteothers|
|
||||
guestscanmodify|
|
||||
@@ -164,7 +167,8 @@ Client access works when accessing Resource calendars.
|
||||
organizer|
|
||||
<EventOrganizerSubfieldName>|
|
||||
originalstart|originalstarttime|
|
||||
<EventOutOfOfficePropertiesSubfieldName>
|
||||
outofofficeproperties|
|
||||
<EventOutOfOfficePropertiesSubfieldName>|
|
||||
privatecopy|
|
||||
recurrence|
|
||||
recurringeventid|
|
||||
@@ -254,6 +258,7 @@ Client access works when accessing Resource calendars.
|
||||
(birthday <Date>)|
|
||||
(color <EventColorName>)|
|
||||
(colorindex|colorid <EventColorIndex>)|
|
||||
(conferencedata meet <MeetID>)|
|
||||
(description <String>)|
|
||||
(end|endtime (allday <Date>)|<Time>)|
|
||||
(guestscaninviteothers <Boolean>)|
|
||||
|
||||
@@ -544,7 +544,7 @@ gam print cros [todrive <ToDriveAttribute>*]
|
||||
[start <Date>] [end <Date>] [listlimit <Number>]
|
||||
[reverselists <CrOSListFieldNameList>]
|
||||
[timerangeorder ascending|descending] [showdvrsfp]
|
||||
(addcsvdata <FieldName> <String>)*
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
@@ -591,9 +591,11 @@ Add additional columns of data from the command line to the output
|
||||
* `addcsvdata <FieldName> <String>`
|
||||
|
||||
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.
|
||||
|
||||
If `formatjson` and `addcsvdata` are specified, the option `includecsvdatainjson` causes GAM to add the
|
||||
additional field values to the JSON data.
|
||||
|
||||
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.
|
||||
@@ -612,7 +614,7 @@ gam <CrOSTypeEntity> print cros [todrive <ToDriveAttribute>*]
|
||||
[start <Date>] [end <Date>] [listlimit <Number>]
|
||||
[reverselists <CrOSListFieldNameList>]
|
||||
[timerangeorder ascending|descending] [showdvrsfp]
|
||||
(addcsvdata <FieldName> <String>)*
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
@@ -623,6 +625,7 @@ gam print cros [todrive <ToDriveAttribute>*] select <CrOSTypeEntity>
|
||||
[start <Date>] [end <Date>] [listlimit <Number>]
|
||||
[reverselists <CrOSListFieldNameList>]
|
||||
[timerangeorder ascending|descending] [showdvrsfp]
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
@@ -645,9 +648,11 @@ Add additional columns of data from the command line to the output
|
||||
* `addcsvdata <FieldName> <String>`
|
||||
|
||||
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.
|
||||
|
||||
If `formatjson` and `addcsvdata` are specified, the option `includecsvdatainjson` causes GAM to add the
|
||||
additional field values to the JSON data.
|
||||
|
||||
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.
|
||||
|
||||
@@ -40,6 +40,18 @@ Use `gam user user@domain.com update serviceaccount` and make sure that the foll
|
||||
* [Filters](https://support.google.com/a/answer/7549103)
|
||||
* [Device Search Fields](https://developers.google.com/admin-sdk/directory/v1/search-operators)
|
||||
|
||||
Use this table to filter/query for specific device types:
|
||||
| Device Type | Filter/Query |
|
||||
|-------------|--------------|
|
||||
| ANDROID | type:android |
|
||||
| CHROME_OS | type:chromeos |
|
||||
| GOOGLE_SYNC | type:googlesync |
|
||||
| IOS | type:ios |
|
||||
| LINUX | type:linux |
|
||||
| MAC_OS | type:mac |
|
||||
| WINDOWS | type:windows |
|
||||
|
||||
|
||||
## Definitions
|
||||
```
|
||||
<AssetTag> ::= <String>
|
||||
@@ -370,7 +382,6 @@ Windows Command Prompt
|
||||
for /f "delims=" %a in ('gam print deviceusers queries "'model:Mac'" showitemcountonly') do set count=%a
|
||||
```
|
||||
|
||||
|
||||
## Display device user client state
|
||||
```
|
||||
gam info deviceuserstate <DeviceUserEntity> [clientid <String>]
|
||||
@@ -379,11 +390,11 @@ gam info deviceuserstate <DeviceUserEntity> [clientid <String>]
|
||||
## Update device user client state
|
||||
The API that supports this command is in beta mode. In particular, setting `assettags` and `customvalues`
|
||||
works if you set the values once; each additional time you set values they are added to the existing values
|
||||
and they is no way at the moment to clear values.
|
||||
and the `clear` option does not work to clear values.
|
||||
```
|
||||
gam update deviceuserstate <DeviceUserEntity> [clientid <String>]
|
||||
[customid <String>] [assettags clear|<AssetTagList>]
|
||||
[compliantstate|compliancestate compliant|noncompliant] [managedstate clear|managed|unmanaged]
|
||||
[healthscore very_poor|poor|neutral|good|very_good] [scorereason clear|<String>]
|
||||
(customvalue (bool|boolean <Boolean>)|(number <Integer>)|(string <String>))*
|
||||
(customvalue clear|(bool|boolean <String> <Boolean>)|(number <String> <Integer>)|(string <String> <String>))*
|
||||
```
|
||||
|
||||
@@ -354,6 +354,8 @@ gam print cigroup-members [todrive <ToDriveAttribute>*]
|
||||
[minimal|basic|full]
|
||||
[(recursive [noduplicates]) | |includederivedmembership] [nogroupeemail]
|
||||
[memberemaildisplaypattern|memberemailskippattern <REMatchPattern>]
|
||||
(addcsvdata <FieldName> <String>)*
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
By default, the group membership of all groups in the account are displayed, these options allow selection of subsets of groups:
|
||||
* `cimember <UserItem>` - Limit display to groups that contain `<UserItem>` as a member
|
||||
@@ -414,6 +416,9 @@ has in any constituent group, it is not necessarily its role in the top group.
|
||||
The options `recursive noduplicates` and `includederivedmembership types user` return the same list of users.
|
||||
The `includederivedmembership` option makes less API calls but doesn't show level and subgroup information.
|
||||
|
||||
Add additional columns of data from the command line to the output
|
||||
* `addcsvdata <FieldName> <String>`
|
||||
|
||||
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.
|
||||
|
||||
|
||||
@@ -322,6 +322,7 @@ gam print cigroups [todrive <ToDriveAttribute>*]
|
||||
[types <CIGroupMemberTypeList>]
|
||||
[memberemaildisplaypattern|memberemailskippattern <REMatchPattern>]
|
||||
[convertcrnl] [delimiter <Character>]
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
By default, all groups in the account are displayed, these options allow selection of subsets of groups:
|
||||
@@ -385,9 +386,15 @@ Members that have met the above qualifications to be displayed can be further qu
|
||||
* `memberemaildisplaypattern <REMatchPattern>` - Members with email addresses that match `<REMatchPattern>` will be displayed; others will not be displayed
|
||||
* `memberemailskippattern <REMatchPattern>` - Members with email addresses that match `<REMatchPattern>` will not be displayed; others will be displayed
|
||||
|
||||
Add additional columns of data from the command line to the output
|
||||
* `addcsvdata <FieldName> <String>`
|
||||
|
||||
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.
|
||||
|
||||
If `formatjson` and `addcsvdata` are specified, the option `includecsvdatainjson` causes GAM to add the
|
||||
additional field values to the JSON data.
|
||||
|
||||
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.
|
||||
|
||||
@@ -10,6 +10,111 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
||||
|
||||
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
||||
|
||||
### 7.31.05
|
||||
|
||||
Added option `variables <RESearchPattern>` to `gam select section <SectionName> verify` and `gam config verify`
|
||||
that causes GAM to only display variables with names selected by `<RESearchPattern>`.
|
||||
```
|
||||
gam select School verify variables "^(customer|domain)"
|
||||
Section: School
|
||||
customer_id = C03abc123
|
||||
domain = school.edu
|
||||
|
||||
gam config verify variables 'dir'
|
||||
Section: DEFAULT
|
||||
cache_dir = ~/GamConfig/gamcache ; /Users/gamteam/GamConfig/gamcache
|
||||
config_dir = ~/GamConfig ; /Users/gamteam/GamConfig
|
||||
drive_dir = ~/GamWork ; /Users/gamteam/GamWork
|
||||
gmail_cse_incert_dir = ~/GmailCSE/Certs ; /Users/gamteam/GmailCSE/Certs
|
||||
gmail_cse_inkey_dir = ~/GmailCSE/Keys ; /Users/gamteam/GmailCSE/Keys
|
||||
input_dir = .
|
||||
```
|
||||
|
||||
### 7.31.04
|
||||
|
||||
Fixed bug in `gam report admin|chrome` that caused to events to not be displayed.
|
||||
|
||||
Updated `gam <UserTypeEntity> print|show messages|threads ... query <QueryGmail>` to display the query.
|
||||
|
||||
### 7.31.03
|
||||
|
||||
Due to the following Calendar API update, the `gam <UserTypeEntity> transfer calendars` command has been removed.
|
||||
* See: https://developers.google.com/workspace/calendar/release-notes#October_27_2025
|
||||
Data ownership can be transferred in the Google Calendar UI.
|
||||
|
||||
### 7.31.02
|
||||
|
||||
Added the following options to `gam <UserTypeEntity> copy drivefile`
|
||||
to limit copying to those files owned by selected users.
|
||||
* `copysubfilesownedby users <EmailAddressList>` - Only files owned by users in `<EmailAddressList>` are copied.
|
||||
* `copysubfilesownedby notusers <EmailAddressList>` - Only files not owned by users in `<EmailAddressList>` are copied.
|
||||
* `copysubfilesownedby regex <REMatchPattern>` - Only files owned by users whose email addresses match `<REMatchPattern>` are copied.
|
||||
* `copysubfilesownedby notregex <REMatchPattern>` - Only files owned by users whose email addresses do not match `<REMatchPattern>` are copied.
|
||||
|
||||
### 7.31.01
|
||||
|
||||
Code cleanup for `addcsvdata <FieldName> <String>`.
|
||||
|
||||
### 7.31.00
|
||||
|
||||
Fixed bug in `gam report chrome (user <UserItem>)|(select <UserTypeEntity>)` where no activities were returned.
|
||||
`report chrome` does not use the parameter `userKey=<EmailAddress>` as do other applications but requires
|
||||
parameter `filter DEVICE_USER==<EmailAddress>`.
|
||||
|
||||
Updated `gam report admin (user <UserItem>)|(select <UserTypeEntity>)` to use parameter `filter USER_EMAIL==<EmailAddress>`
|
||||
to display activiities affecting the user `<EmailAddress>`. Use option `userisactor` to use the parameter `userKey=<EmailAddress>`
|
||||
that displays activities where user `<EmailAddress>` executed the command that generated the activity.
|
||||
|
||||
Fixed bug in `gam print cros|filelist|users ... (addcsvdata <FieldName> <String>)+ formatjson` where the `addcsvdata` columns
|
||||
were not displayed but the additional field values were included in the JSON data. Now, the `addcsvdata` columns
|
||||
are displayed but the additional field values are only included in the JSON data when option `includdecsvdatainjson` is specified.
|
||||
|
||||
Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print cigroups|groups`
|
||||
that adds additional columns of data to the CSV file output.
|
||||
|
||||
Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print cigroupmembere|group-members`
|
||||
that adds additional columns of data to the CSV file output.
|
||||
|
||||
### 7.30.05
|
||||
|
||||
Added option `gmaileventtypes <NumberRangeList>` to `gam report gmail` that can be used to limit the event types displayed.
|
||||
```
|
||||
<NumberRange> ::= <Number>|(<Number>/<Number>)
|
||||
<NumberRangeList> ::= "<NumberRange>(,<NumberRange>)*"
|
||||
|
||||
gam report gmail user user@domain.com gmaileventtypes 1,10/11
|
||||
```
|
||||
* See: https://developers.google.com/workspace/admin/reports/v1/appendix/activity/gmail
|
||||
|
||||
Updated sorting of column headers in `gam report <ActivityApplicationName>`.
|
||||
|
||||
### 7.30.04
|
||||
|
||||
Updated `gam report gmail` to avoid the following error when incomplete start/end time information is provided.
|
||||
```
|
||||
ERROR: Invalid request: Start time and end time should both be provided, and the scan duration should not be greater than 30 days.
|
||||
```
|
||||
* No time information provided - GAM sets `range -30d today`
|
||||
* Only `start <Time>` provided - GAM sets `end <Time>+30d`
|
||||
* Only `end <Time>` provided - GAM sets `start <Time>-30d`
|
||||
|
||||
### 7.30.03
|
||||
|
||||
Updated `gam report <ActivityApplicationName>` to reflect the changes described here:
|
||||
* See: https://workspaceupdates.googleblog.com/2025/12/google-workspace-audit-log-api.html
|
||||
|
||||
Added option `resourcedetailsfilter <String>` to `gam report <ActivityApplicationName>` described here:
|
||||
* See: https://developers.google.com/workspace/admin/reports/reference/rest/v1/activities/list#query-parameters
|
||||
|
||||
For `gam <UserTypeEntity> print <Objects>`, expanded the list of `<Objects>` covered by `gam.cfg csv_output_users_audit = True`.
|
||||
|
||||
### 7.30.02
|
||||
|
||||
Added option `conferencedata meet <MeetID>` to `<EventAttribute>` that allows specifying
|
||||
a reference to an existing Google Meet when creating/updating a calendar event.
|
||||
|
||||
Upgraded to Python 3.14.2.
|
||||
|
||||
### 7.30.01
|
||||
|
||||
Fixed bug introduced in 7.30.00 that caused errors when reading CSV files.
|
||||
|
||||
@@ -626,6 +626,7 @@ gam print group-members [todrive <ToDriveAttribute>*]
|
||||
[(recursive [noduplicates])|includederivedmembership] [nogroupemail]
|
||||
[peoplelookup|(peoplelookupuser <EmailAddress>)]
|
||||
[unknownname <String>] [cachememberinfo [Boolean]]
|
||||
(addcsvdata <FieldName> <String>)*
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
By default, the group membership of all groups in the account are displayed, these options allow selection of subsets of groups:
|
||||
@@ -733,6 +734,9 @@ The options `recursive noduplicates` and `includederivedmembership types user no
|
||||
The `includederivedmembership` option makes less API calls but doesn't show level and subgroup information.
|
||||
Expanding a member of type CUSTOMER may produce a large volume of data as it will display all users in your domain.
|
||||
|
||||
Add additional columns of data from the command line to the output
|
||||
* `addcsvdata <FieldName> <String>`
|
||||
|
||||
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.
|
||||
|
||||
|
||||
@@ -474,6 +474,7 @@ gam print groups [todrive <ToDriveAttribute>*]
|
||||
[types <GroupMemberTypeList>]
|
||||
[memberemaildisplaypattern|memberemailskippattern <REMatchPattern>]
|
||||
[convertcrnl] [delimiter <Character>] [sortheaders]
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
By default, all groups in the account are displayed, these options allow selection of subsets of groups:
|
||||
@@ -569,9 +570,15 @@ Members that have met the above qualifications to be displayed can be further qu
|
||||
* `memberemaildisplaypattern <REMatchPattern>` - Members with email addresses that match `<REMatchPattern>` will be displayed; others will not be displayed
|
||||
* `memberemailskippattern <REMatchPattern>` - Members with email addresses that match `<REMatchPattern>` will not be displayed; others will be displayed
|
||||
|
||||
Add additional columns of data from the command line to the output
|
||||
* `addcsvdata <FieldName> <String>`
|
||||
|
||||
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.
|
||||
|
||||
If `formatjson` and `addcsvdata` are specified, the option `includecsvdatainjson` causes GAM to add the
|
||||
additional field values to the JSON data.
|
||||
|
||||
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.
|
||||
|
||||
31
wiki/Home.md
31
wiki/Home.md
@@ -10,7 +10,36 @@ To run all commands properly, GAM7 requires three things:
|
||||
* A special service account that is authorized to act on behalf of your users in order to modify user-specific settings and data such as Drive files, Calendars and Gmail messages and settings like signatures.
|
||||
|
||||
# Documentation
|
||||
See the sections in the right-hand column for documentation.
|
||||
|
||||
## Update History
|
||||
A log of updates to GAM7.
|
||||
|
||||
## Installation
|
||||
Instructions detailing ways of installing GAM7 and alternate installation issues.
|
||||
|
||||
## Configuration
|
||||
Instructions detailing configuration of GAM7 and alternate authorization methods.
|
||||
|
||||
## Notes and Information
|
||||
References to resources that enhance your use of GAM7.
|
||||
|
||||
## Definitions
|
||||
BNF definitions of common items in the GAM7 command syntax.
|
||||
|
||||
## Command Processing
|
||||
Information regarding use of command line options to control how GAM7 operates.
|
||||
|
||||
## Collections
|
||||
BNF Syntax definitions of ways to specify multiple Googlw Workspace opjects.
|
||||
|
||||
## Client Access
|
||||
Syntax, descriptions and examples of commands that are executed by your Google Workspace administrator.
|
||||
|
||||
## Special Service Account Access
|
||||
How to set up a GAM7 Chat Bot; this is required to use the Chat API to manage Chat Spaces in your Google Workspace.
|
||||
|
||||
## Service Account Access
|
||||
Syntax, descriptions and examples of commands that are executed on behalf of your Google Workspace users.
|
||||
|
||||
# Installation
|
||||
* [How to Install GAM7](How-to-Install-GAM7)
|
||||
|
||||
@@ -252,10 +252,10 @@ writes the credentials into the file oauth2.txt.
|
||||
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
||||
admin@server:/Users/admin$ gam version
|
||||
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
||||
GAM 7.30.01 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM 7.31.05 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.1 64-bit final
|
||||
macOS Tahoe 26.1 x86_64
|
||||
Python 3.14.2 64-bit final
|
||||
macOS Tahoe 26.2 x86_64
|
||||
Path: /Users/admin/bin/gam7
|
||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||
|
||||
@@ -990,9 +990,9 @@ writes the credentials into the file oauth2.txt.
|
||||
C:\>del C:\GAMConfig\oauth2.txt
|
||||
C:\>gam version
|
||||
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
||||
GAM 7.30.01 - https://github.com/GAM-team/GAM - pythonsource
|
||||
GAM 7.31.05 - https://github.com/GAM-team/GAM - pythonsource
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.1 64-bit final
|
||||
Python 3.14.2 64-bit final
|
||||
Windows 11 10.0.26200 AMD64
|
||||
Path: C:\GAM7
|
||||
Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
<MimeTypeNameList> ::= "<MimeTypeName>(,<MimeTypeName>)*"
|
||||
<NamespaceList> ::= "<Namespace>(,<Namespace>)*"
|
||||
<NotesNameList> ::= "<NotesName>(,<NotesName>)*"
|
||||
<NumberRangeList> ::= "<NumberRange>(,<NumberRange>)*"
|
||||
<OrgUnitList> ::= "<OrgUnitItem>(,<OrgUnitItem>)*"
|
||||
<OtherContactsResourceNameList> ::= "<OtherContactsResourceName>(,<OtherContactsResourceName>)*"
|
||||
<PeopleResourceNameList> ::= "<PeopleResourceName>(,<PeopleResourceName>)*"
|
||||
|
||||
@@ -27,12 +27,13 @@ gam [<Select>] [showsections] [<SelectOutputFilter>|<SelectInputFilter>] [<Confi
|
||||
Select a section from gam.cfg and process a GAM command using values from that section.
|
||||
```
|
||||
<Select> ::=
|
||||
select <Section> [save] [verify]
|
||||
select <Section> [save] [verify [variables <RESearchPattern>]]
|
||||
```
|
||||
- `save`
|
||||
- Set `section = <Section>` in the `[DEFAULT]` section and write configuration data to gam.cfg
|
||||
- `verify`
|
||||
- Print the variable values for the selected section
|
||||
- Use `variables <RESearchPattern>` to display variables with names selected by `<RESearchPattern>`
|
||||
- Values are determined in this order: Selected section, DEFAULT section, Program default
|
||||
|
||||
If you enter `gam select <SectionName>` and nothing else on the command line,
|
||||
@@ -80,7 +81,7 @@ Set variables in gam.cfg.
|
||||
|
||||
```
|
||||
<Config> ::=
|
||||
config (<VariableName> [=] <Value>)* [save] [verify]
|
||||
config (<VariableName> [=] <Value>)* [save] [verify [variables <RESearchPattern>]]
|
||||
```
|
||||
- `<VariableName> [=] <Value>`
|
||||
- Set `<VariableName> = <Value>` in the current section
|
||||
@@ -90,6 +91,7 @@ Set variables in gam.cfg.
|
||||
- Write configuration data to gam.cfg
|
||||
- `verify`
|
||||
- Print the variable values for the current section
|
||||
- Use `variables <RESearchPattern>` to display variables with names selected by `<RESearchPattern>`
|
||||
- Values are determined in this order: Current section, DEFAULT section, Program default
|
||||
|
||||
You can prefix `<Config>` with `<Select>` to set a variable in a particular section.
|
||||
|
||||
@@ -12,10 +12,14 @@
|
||||
- [User reports](#user-reports)
|
||||
|
||||
## API documentation
|
||||
Changes starting 2025-10-29.
|
||||
* [Activity Data Sources](https://support.google.com/a/answer/11482175)
|
||||
|
||||
Changes starting 2025-10-29.
|
||||
* [Reports API - Admin log event changes](https://support.google.com/a/answer/16601511)
|
||||
|
||||
Changes starting 2025-12-20
|
||||
* [Reports API - Admin log enhancements](https://workspaceupdates.googleblog.com/2025/12/google-workspace-audit-log-api.html)
|
||||
|
||||
These pages show event/parameter names; scroll down in the left column to: Reports.
|
||||
|
||||
* [Reports API - Activities](https://developers.google.com/admin-sdk/reports/v1/reference/activities)
|
||||
@@ -24,6 +28,8 @@ These pages show event/parameter names; scroll down in the left column to: Repor
|
||||
|
||||
## Definitions
|
||||
```
|
||||
<NumberRange> ::= <Number>|(<Number>/<Number>)
|
||||
<NumberRangeList> ::= "<NumberRange>(,<NumberRange>)*"
|
||||
<DayOfWeek> ::= mon|tue|wed|thu|fri|sat|sun
|
||||
<Time> ::=
|
||||
<Year>-<Month>-<Day>(<Space>|T)<Hour>:<Minute>:<Second>[.<MilliSeconds>](Z|(+|-(<Hour>:<Minute>))) |
|
||||
@@ -45,54 +51,70 @@ config csv_output_row_filter "'\"accounts:used_quota_in_mb\":count>15000'"
|
||||
## Activity reports
|
||||
```
|
||||
<ActivityApplicationName> ::=
|
||||
accessevaluation|
|
||||
accesstransparency|access|
|
||||
admin|
|
||||
admindataaction|
|
||||
assignments|
|
||||
calendar|calendars|
|
||||
chat|
|
||||
chrome|
|
||||
classroom|
|
||||
cloudsearch|
|
||||
contacts|
|
||||
contextawareaccess|
|
||||
datamigration|
|
||||
datastudio|
|
||||
directorysync|
|
||||
drive|doc|docs|
|
||||
gcp|cloud|
|
||||
geminiinworkspaceapps|gemini|geminiforworkspace|
|
||||
gmail|
|
||||
gplus|currents|google+|
|
||||
graduation|
|
||||
groups|group|
|
||||
groupsenterprise|enterprisegroups|
|
||||
jamboard|
|
||||
keep|
|
||||
ldap|
|
||||
login|logins|
|
||||
meet|hangoutsmeet|
|
||||
meethardware|
|
||||
mobile|devices|
|
||||
profile|
|
||||
rules|
|
||||
saml|
|
||||
takeout|
|
||||
tasks|
|
||||
token|tokens|oauthtoken|
|
||||
useraccounts|
|
||||
vault
|
||||
|
||||
gam report <ActivityApplicationName> [todrive <ToDriveAttribute>*]
|
||||
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
|
||||
[userisactor]
|
||||
[([start <Time>] [end <Time>])|(range <Time> <Time>)|
|
||||
yesterday|today|thismonth|(previousmonths <Integer>)]
|
||||
[filter <String> (filtertime<String> <Time>)*]
|
||||
[event|events <EventNameList>] [ip <String>]
|
||||
[groupidfilter <String>]
|
||||
[gmaileventtypes <NumberRangeList>]
|
||||
[groupidfilter <String>] [resourcedetailsfilter <String>]
|
||||
[maxactivities <Number>] [maxevents <Number>] [maxresults <Number>]
|
||||
[countsonly [bydate|summary] [eventrowfilter]]
|
||||
(addcsvdata <FieldName> <String>)* [shownoactivities]
|
||||
```
|
||||
Select the application with `<ActivityApplicationName>`.
|
||||
|
||||
For all `<ActivityApplicationNames>` other than `admin`, select the users for whom information is desired.
|
||||
For all `<ActivityApplicationNames>`, select the users for whom information is desired.
|
||||
* `user all` - All users, the default; there is one API call
|
||||
* `user <UserItem>` - An individual user; there is one API call
|
||||
* `orgunit|org|ou <OrgUnitPath>` - All users in the specified OU; there is one API call
|
||||
* `showorgunit` - Add a column labelled `actor.orgUnitPath` to the output; an additional API call is made to get the email addresses of the users in `<OrgUnitPath>`
|
||||
* `select <UserTypeEntity>` - A selected collection of users, e.g., `select group staff@domain.com`; there is one API call per user
|
||||
|
||||
For `<ActivityApplicationName>` `admin`, the users selected are the admins that executed the command, not the targeted user.
|
||||
Use `filter "USER_EMAIL==user@domain.com"` to select the targeted user.
|
||||
For `<ActivityApplicationName>` `admin` and `chrome`, `orgunit|org|ou <OrgUnitPath>` does not work, use `select ou <OrgUnitPath>`.
|
||||
|
||||
For `<ActivityApplicationName>` `admin`, use option `userisactor` to display activities where the user executed the command that generated the activity.
|
||||
|
||||
Limit the time period.
|
||||
* `start <Time>`
|
||||
@@ -103,6 +125,15 @@ Limit the time period.
|
||||
* `thismonth` - The current calendar month up to the current time
|
||||
* `previousmonths <Integer>` - A number in the range 1 to 6 indicating calendar months previous to the current month
|
||||
|
||||
For `gam report gmail`, `start <Time>` and `end <Time>`should both be provided, and the scan duration should not be greater than 30 days.
|
||||
GAM will supply missing values:
|
||||
* No time information provided - GAM sets `range -30d today`
|
||||
* Only `start <Time>` provided - GAM sets `end <Time>+30d`
|
||||
* Only `end <Time>` provided - GAM sets `start <Time>-30d`
|
||||
|
||||
For `gam report gmail`, `gmaileventtypes <NumberRangeList>` can be used to limit the event types displayed.
|
||||
* See: https://developers.google.com/workspace/admin/reports/v1/appendix/activity/gmail
|
||||
|
||||
Apply API filters.
|
||||
* `filter|filters <String>` - `<String>` is a comma separated list of filter expressions.
|
||||
|
||||
@@ -111,6 +142,12 @@ The `filtertime<String> <Time>` value replaces the string `#filtertime<String>#`
|
||||
The characters following `filtertime` can be any combination of lowercase letters and numbers. This is most useful in scripts
|
||||
where you can specify a relative date without having to change the script.
|
||||
|
||||
Limit to those users that are a member of at least one of a list of groups.
|
||||
* `groupidfilter <String>` - Format: "id:abc123,id:xyz456"
|
||||
|
||||
Limit based on resource details.
|
||||
* `resourcedetailsfilter <String>` - See: https://developers.google.com/workspace/admin/reports/reference/rest/v1/activities/list#query-parameters
|
||||
|
||||
You can use `config csv_output_row_filter` to filter the events if the API filter can't produce the results you want.
|
||||
|
||||
Limit to a list of specific events.
|
||||
@@ -119,9 +156,6 @@ Limit to a list of specific events.
|
||||
Limit to a specific IP address.
|
||||
* `ip <String>`
|
||||
|
||||
Limit to those users that are a member of at least one of a list of groups.
|
||||
* `groupidfilter <String>` - Format: "id:abc123,id:xyz456"
|
||||
|
||||
Limit the total number of activites.
|
||||
* `maxactivities <Number>`
|
||||
|
||||
|
||||
@@ -145,40 +145,8 @@ The `quotechar <Character>` option allows you to choose an alternate quote chara
|
||||
## Transfer calendar ownership
|
||||
|
||||
You can transfer ownership of calendars from one user to another; only non-primary calendars owned by the source user can be transferred.
|
||||
```
|
||||
gam <UserTypeEntity> transfer calendars|seccals <UserItem> [<UserCalendarEntity>]
|
||||
[keepuser | (retainrole <CalendarACLRole>)] [sendnotifications <Boolean>]
|
||||
[noretentionmessages]
|
||||
[<CalendarSettings>] [append description|location|summary] [noupdatemessages]
|
||||
[deletefromoldowner] [addtonewowner <CalendarAttribute>*] [nolistmessages]
|
||||
```
|
||||
If `<UserCalendarEntity>` is not specified, all of a user's owned secondary calendars will be transferrdd.
|
||||
|
||||
By default, the users in `<UserTypeEntity>` retain no role in the transferred calendars.
|
||||
* `keepuser` - The users in `<UserTypeEntity>` retain their ownership.
|
||||
* `retainrole <CalendarACLRole>` - The users in `<UserTypeEntity>` retain the specified role.
|
||||
* `noretentionmessages` - Suppress the original owner role retention messages.
|
||||
This capability is no longer available, see: https://developers.google.com/workspace/calendar/release-notes#October_27_2025
|
||||
|
||||
By default, when you add or update a calendar ACL, a notification is sent to the affected users; use `sendnotifications false` to suppress sending the notifications.
|
||||
Data ownership can be transferred in the Google Calendar UI.
|
||||
|
||||
You can update calendar settings as part of the transfer. In description, location and summary, #email#, #user# and #username# will be replaced
|
||||
by the original owner's full email address or just the name portion; #timestamp# will be replaced by the current date and time.
|
||||
* `<CalendarSettings>` - The value specified will replace the existing value.
|
||||
* `append description|location|summary` - The specified <CalendarSettings> value will be appended to the existing value.
|
||||
* `noupdatemessages` - Suppress the settings update messages.
|
||||
|
||||
You can manipulate the old and new owner's calendar lists.
|
||||
* `deletefromoldowner` - Delete the calendar from the old owner's calendar list
|
||||
* `addtonewowner <CalendarAttribute>*` - Add the calendar to the new owner's calendar list; optionally specify attributes
|
||||
* `nolistmessages` - Suppress the calendar list add/delete messages.
|
||||
|
||||
### Example
|
||||
Transfer a secondary calendar from oldowner to newowner. Remove the calendar from the old owner's calendar list and add to the new owner's calendar list.
|
||||
```
|
||||
gam user oldowner@domain.com transfer calendars newowner@domain.com c_aaa123zzz@group.calendar.google.com removefromoldowner addtonewowner
|
||||
```
|
||||
|
||||
Transfer ownership of all non-primary calendars from oldowner to newowner; append a message to the calendar description noting the old owner and the time of transfer.
|
||||
```
|
||||
gam user oldowner@domain.com transfer calendars newowner@domain.com minaccessrole owner description "(Transferred from #user# on #timestamp#)" append description
|
||||
```
|
||||
|
||||
@@ -114,6 +114,8 @@
|
||||
<CourseState> ::= active|archived|provisioned|declined
|
||||
<CourseStateList> ::= all|"<CourseState>(,<CourseState>)*"
|
||||
<iCalUID> ::= <String>
|
||||
<MeetID> ::= <String>
|
||||
Must match this Python Regular Expression: [a-z]{3}-[a-z]{4}-[a-z]{3}
|
||||
<ResourceID> ::= <String>
|
||||
<ResourceIDList> ::= "<ResourceID>(,<ResourceID>)*"
|
||||
<UniqueID> ::= id:<String>
|
||||
@@ -215,7 +217,8 @@
|
||||
endtimeunspecified|
|
||||
extendedproperties|
|
||||
eventtype|
|
||||
<EventFocusTimePropertiesSubfieldName>
|
||||
focustimeproperties|
|
||||
<EventFocusTimePropertiesSubfieldName>|
|
||||
gadget|
|
||||
guestscaninviteothers|
|
||||
guestscanmodify|
|
||||
@@ -229,7 +232,8 @@
|
||||
organizer|
|
||||
<EventOrganizerSubfieldName>|
|
||||
originalstart|originalstarttime|
|
||||
<EventOutOfOfficePropertiesSubfieldName>
|
||||
outofofficeproperties|
|
||||
<EventOutOfOfficePropertiesSubfieldName>|
|
||||
privatecopy|
|
||||
recurrence|
|
||||
recurringeventid|
|
||||
@@ -320,6 +324,7 @@
|
||||
(birthday <Date>)|
|
||||
(color <EventColorName>)|
|
||||
(colorindex|colorid <EventColorIndex>)|
|
||||
(conferencedata meet <MeetID>)|
|
||||
(description <String>)|
|
||||
(end|endtime (allday <Date>)|<Time>)|
|
||||
(guestscaninviteothers <Boolean>)|
|
||||
|
||||
@@ -100,7 +100,12 @@ gam <UserTypeEntity> copy drivefile <DriveFileEntity>
|
||||
[skipids <DriveFileEntity>]
|
||||
[copysubfiles [<Boolean>]] [filenamematchpattern <REMatchPattern>]
|
||||
[filemimetype [not] <MimeTypeList>]
|
||||
[copysubfilesownedby any|me|others]
|
||||
[copysubfilesownedby
|
||||
any|me|others|
|
||||
users <EmailAddressList>|
|
||||
notusers <EmailAddressList>|
|
||||
regex <REMatchPattern>|
|
||||
notregex <REMatchPattern>]
|
||||
[copysubfolders [<Boolean>]] [foldernamematchpattern <REMatchPattern>]
|
||||
[copysubshortcuts [<Boolean>]] [shortcutnamematchpattern <REMatchPattern>]
|
||||
[duplicatefiles overwriteolder|overwriteall|duplicatename|uniquename|skip]
|
||||
@@ -188,9 +193,13 @@ You can specify `<REMatchPattern>` patterns that limit the items copied based on
|
||||
* `shortcutnamematchpattern <REMatchPattern>` - Only shortcuts whose name matches `<REMatchPattern>` are copied
|
||||
|
||||
### By default, when copying sub files, all files, regardless of ownership, are copied.
|
||||
* `copysubfilesownedby any` - All files, regardless of ownership, are copied.
|
||||
* `copysubfilesownedby any` - All files, regardless of ownership, are copied; this is the default.
|
||||
* `copysubfilesownedby me` - Only files owned by `<UserTypeEntity>` are copied.
|
||||
* `copysubfilesownedby others` - Only files not owned by `<UserTypeEntity>` are copied.
|
||||
* `copysubfilesownedby users <EmailAddressList>` - Only files owned by users in `<EmailAddressList>` are copied.
|
||||
* `copysubfilesownedby notusers <EmailAddressList>` - Only files not owned by users in `<EmailAddressList>` are copied.
|
||||
* `copysubfilesownedby regex <REMatchPattern>` - Only files owned by users whose email addresses match `<REMatchPattern>` are copied.
|
||||
* `copysubfilesownedby notregex <REMatchPattern>` - Only files owned by users whose email addresses do not match `<REMatchPattern>` are copied.
|
||||
|
||||
### Specify a new name for the file/folder
|
||||
* `newfilename <DriveFileName>` - The copied file/folder will be named `<DriveFileName>`
|
||||
|
||||
@@ -752,7 +752,7 @@ The option `showlastmodification` displays the following fields:
|
||||
`lastModifiedFileId,lastModifiedFileName,lastModifiedFileMimeType,lastModifiedFilePath,lastModifyingUser,lastModifiedTime`;
|
||||
these are for the most recently modified file.
|
||||
|
||||
For print filecouts, add additional columns of data from the command line to the output:
|
||||
For print filecounts, add additional columns of data from the command line to the output:
|
||||
* `addcsvdata <FieldName> <String>` - Add additional columns of data from the command line to the output
|
||||
|
||||
See [Select files for Display file counts, list, tree](#select-files-for-display-file-counts-list-tree)
|
||||
@@ -1103,7 +1103,7 @@ gam <UserTypeEntity> print|show filelist [todrive <ToDriveAttribute>*]
|
||||
[showparentsidsaslist] [showpermissionslast]
|
||||
(orderby <DriveFileOrderByFieldName> [ascending|descending])* [delimiter <Character>]
|
||||
[stripcrsfromname]
|
||||
(addcsvdata <FieldName> <String>)*
|
||||
(addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
By default, `print filelist` displays all files owned by the specified [`<UserTypeEntity>`](https://github.com/GAM-team/GAM/wiki/Collections-of-Users)
|
||||
@@ -1214,7 +1214,6 @@ If no query or select is performed, use these options to get file path informati
|
||||
* `filepath|fullpath` - For files and folders, display the full path(s) to them starting at the root (My Drive)
|
||||
* `addpathstojson` - When this option and `formatjson` are specified, the path information will be included in the
|
||||
JSON data rather than as additional columns
|
||||
* `addcsvdata <FieldName> <String>` - Add additional columns of data from the command line to the output
|
||||
|
||||
When used with `filepath` or `fullpath`, `showdepth` will display a `depth` column.
|
||||
Files/folders directly in `My Drive` are at depth 0, the depth increases by 1
|
||||
@@ -1308,9 +1307,15 @@ Use the `countsrowfilter` option to have GAM to apply `config csv_output_row_fil
|
||||
The `stripcrsfromname` option strips nulls, carriage returns and linefeeds from drive file names.
|
||||
This option is special purpose and will not generally be used.
|
||||
|
||||
Add additional columns of data from the command line to the output
|
||||
* `addcsvdata <FieldName> <String>` - Add additional columns of data from the command line to the output
|
||||
|
||||
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.
|
||||
|
||||
If `formatjson` and `addcsvdata` are specified, the option `includecsvdatainjson` causes GAM to add the
|
||||
additional field values to the JSON data.
|
||||
|
||||
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.
|
||||
|
||||
@@ -1058,7 +1058,7 @@ gam print users [todrive <ToDriveAttribute>*]
|
||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)*
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
```
|
||||
|
||||
By default, users in all domains in the account are selected; these options allow selection of subsets of users:
|
||||
@@ -1084,7 +1084,7 @@ gam print users [todrive <ToDriveAttribute>*] select <UserTypeEntity>
|
||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)*
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
|
||||
gam <UserTypeEntity> print users [todrive <ToDriveAttribute>*]
|
||||
[orderby <UserOrderByFieldName> [ascending|descending]]
|
||||
@@ -1098,7 +1098,7 @@ gam <UserTypeEntity> print users [todrive <ToDriveAttribute>*]
|
||||
[delimiter <Character>] [sortheaders [<Boolean>]] [scalarsfirst [<Boolean>]]
|
||||
[formatjson [quotechar <Character>]] [quoteplusphonenumbers]
|
||||
[issuspended <Boolean>] [isarchived <Boolean>] [aliasmatchpattern <REMatchPattern>]
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)*
|
||||
[showvalidcolumn] (addcsvdata <FieldName> <String>)* [includecsvdatainjson [<Boolean>]]
|
||||
```
|
||||
|
||||
By default, Gam gets no group membership information for each user. The `groups` and `groupsincolumns`
|
||||
@@ -1167,6 +1167,9 @@ Add additional columns of data from the command line to the output
|
||||
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.
|
||||
|
||||
If `formatjson` and `addcsvdata` are specified, the option `includecsvdatainjson` causes GAM to add the
|
||||
additional field values to the JSON data.
|
||||
|
||||
When you perform `gam print users` with the following `todrive` options to update a sheet within a Google Sheets file:
|
||||
`tdfileid <DriveFileID> tdsheet <SheetEntity> tdupdatesheet`
|
||||
and your data includes international phone numbers that start with a plus sign, Google Sheets generates a `Formula parse error`
|
||||
|
||||
@@ -3,22 +3,22 @@
|
||||
Print the current version of Gam with details
|
||||
```
|
||||
gam version
|
||||
GAM 7.30.01 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM 7.31.05 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.1 64-bit final
|
||||
macOS Tahoe 26.1 x86_64
|
||||
Python 3.14.2 64-bit final
|
||||
macOS Tahoe 26.2 x86_64
|
||||
Path: /Users/Admin/bin/gam7
|
||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||
Time: 2023-06-02T21:10:00-07:00
|
||||
Time: 2025-12-23T13:57:00-08:00
|
||||
```
|
||||
|
||||
Print the current version of Gam with details and time offset information
|
||||
```
|
||||
gam version timeoffset
|
||||
GAM 7.30.01 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM 7.31.05 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.1 64-bit final
|
||||
macOS Tahoe 26.1 x86_64
|
||||
Python 3.14.2 64-bit final
|
||||
macOS Tahoe 26.2 x86_64
|
||||
Path: /Users/Admin/bin/gam7
|
||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||
Your system time differs from www.googleapis.com by less than 1 second
|
||||
@@ -27,13 +27,13 @@ Your system time differs from www.googleapis.com by less than 1 second
|
||||
Print the current version of Gam with extended details and SSL information
|
||||
```
|
||||
gam version extended
|
||||
GAM 7.30.01 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM 7.31.05 - https://github.com/GAM-team/GAM - pyinstaller
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.1 64-bit final
|
||||
macOS Tahoe 26.1 x86_64
|
||||
Python 3.14.2 64-bit final
|
||||
macOS Tahoe 26.2 x86_64
|
||||
Path: /Users/Admin/bin/gam7
|
||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||
Time: 2023-06-02T21:10:00-07:00
|
||||
Time: 2025-12-23T13:57:00-08:00
|
||||
Your system time differs from admin.googleapis.com by less than 1 second
|
||||
OpenSSL 3.5.3 16 Sep 2025
|
||||
arrow 1.3.0
|
||||
@@ -68,7 +68,7 @@ MacOS High Sierra 10.13.6 x86_64
|
||||
Path: /Users/Admin/bin/gam7
|
||||
Version Check:
|
||||
Current: 5.35.08
|
||||
Latest: 7.30.01
|
||||
Latest: 7.31.05
|
||||
echo $?
|
||||
1
|
||||
```
|
||||
@@ -76,7 +76,7 @@ echo $?
|
||||
Print the current version number without details
|
||||
```
|
||||
gam version simple
|
||||
7.30.01
|
||||
7.31.05
|
||||
```
|
||||
In Linux/MacOS you can do:
|
||||
```
|
||||
@@ -86,13 +86,13 @@ echo $VER
|
||||
Print the current version of Gam and address of this Wiki
|
||||
```
|
||||
gam help
|
||||
GAM 7.30.01 - https://github.com/GAM-team/GAM
|
||||
GAM 7.31.05 - https://github.com/GAM-team/GAM
|
||||
GAM Team <google-apps-manager@googlegroups.com>
|
||||
Python 3.14.1 64-bit final
|
||||
macOS Tahoe 26.1 x86_64
|
||||
Python 3.14.2 64-bit final
|
||||
macOS Tahoe 26.2 x86_64
|
||||
Path: /Users/Admin/bin/gam7
|
||||
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
|
||||
Time: 2023-06-02T21:10:00-07:00
|
||||
Time: 2025-12-23T13:57:00-08:00
|
||||
Help: Syntax in file /Users/Admin/bin/gam7/GamCommands.txt
|
||||
Help: Documentation is at https://github.com/GAM-team/GAM/wiki
|
||||
```
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
ChromeOS-Devices.md Classroom-Courses.md Classroom-Membership.md Classroom-StudentGroups.md Cloud-Identity-Devices.md Cloud-Identity-Groups.md Domains.md GamUpdates.md Groups.md Mobile-Devices.md Organizational-Units.md Resources.md Shared-Drives.md Users-Shared-Drives.md Users.md
|
||||
@@ -1,6 +1,7 @@
|
||||
# GAM Configuration
|
||||
- [Introduction](#introduction)
|
||||
- [Variables](#variables)
|
||||
- [Set configuration variables](#set-configuration-variables)
|
||||
- [Multiple Computers](#multiple-computers)
|
||||
- [Separate Staff-Student Domains](#separate-staff-student-domains)
|
||||
- [Multiple Customers and Domains](#multiple-customers-and-domains)
|
||||
@@ -276,7 +277,8 @@ csv_output_row_limit
|
||||
Default: 0
|
||||
csv_output_sort_headers
|
||||
A list of column headers that causes GAM to sort CSV output rows by those headers.
|
||||
The column headers are case insensitive and if column header does not appear in the CSV output, it is ignored.
|
||||
The column headers are case insensitive and if column header does not appear in the CSV output,
|
||||
it is ignored.
|
||||
Default: Blank
|
||||
csv_output_subfield_delimiter
|
||||
Character used to delimit fields and subfields in headers when writing CSV files;
|
||||
@@ -290,8 +292,6 @@ csv_output_timestamp_column
|
||||
csv_output_users_audit
|
||||
Gam print commands that print objects belonging to users
|
||||
don't print rows for users that don't have any of the objects.
|
||||
The objects are: calendars, calendar ACLs, calendar events, delegates, filters,
|
||||
forwarding addresses, sendas addresses, S/MIME certificates and tokens.
|
||||
When csv_output_users_audit is true, a placeholder row will be output with the
|
||||
user's email address; these rows will useful for auditing purposes only,
|
||||
they can not be successfuly used in a gam csv command.
|
||||
@@ -343,7 +343,8 @@ enable_dasa
|
||||
customer_id may not be set to my_customer
|
||||
Signal file: OldGamPath/enabledasa.txt
|
||||
enforce_expansive_access
|
||||
The default value for option `enforceexpansiveaccess` in all commands that delete or update drive file ACLs/permissions.
|
||||
The default value for option `enforceexpansiveaccess` in all commands that delete or update
|
||||
drive file ACLs/permissions.
|
||||
gam <UserTypeEntity> delete permissions
|
||||
gam <UserTypeEntity> delete drivefileacl
|
||||
gam <UserTypeEntity> update drivefileacl
|
||||
@@ -365,7 +366,8 @@ gmail_cse_incert_dir
|
||||
Directory for the S/MIME certificate files used by Gmail Client Side Encryption.
|
||||
Default: Blank
|
||||
gmail_cse_inkey_dir
|
||||
Directory for the Key Access Control List (KACL) wrapped private key data files used by Gmail Client Side Encryption.
|
||||
Directory for the Key Access Control List (KACL) wrapped private key data files used by
|
||||
Gmail Client Side Encryption.
|
||||
Default: Blank
|
||||
input_dir
|
||||
Input directory for files with non-absolute file names.
|
||||
@@ -382,7 +384,8 @@ license_max_results
|
||||
Range: 10 - 1000
|
||||
license_skus
|
||||
A comma separated list of license SKUs; when getting licenses, only these SKUs will be processed.
|
||||
Each item in the list can be a <SKUID> which will be validated or <ProductID>/<SKUID> which will not
|
||||
Each item in the list can be a <SKUID> which will be validated or
|
||||
a <ProductID>/<SKUID> which will not be validated.
|
||||
Default: Blank
|
||||
meet_v2_beta
|
||||
Enable/disable use of Meet API v2 beta for additional Chat Space parameters.
|
||||
@@ -500,8 +503,9 @@ print_cros_ous_and_children
|
||||
This allows predefining the list of org units so they don't have to be specified in each command.
|
||||
Default: Blank
|
||||
process_wait_limit
|
||||
When processing batch/CSV files, how long (in seconds) GAM should wait for all batch|csv processes to complete
|
||||
after all have been started. If the limit is reached, GAM terminates any remaining processes.
|
||||
When processing batch/CSV files, how long (in seconds) GAM should wait for all
|
||||
batch|csv processes to complete after all have been started.
|
||||
If the limit is reached, GAM terminates any remaining processes.
|
||||
Default: 0: no limit
|
||||
Range: 0 - Unlimited
|
||||
quick_cros_move
|
||||
@@ -582,10 +586,12 @@ tls_min_version
|
||||
The minimum TLS version to use in https connections
|
||||
Default: ''
|
||||
todrive_clearfilter
|
||||
Enable/disable clearing the spreadsheet basic filter when uploading data to an existing sheet in an existing file.
|
||||
Enable/disable clearing the spreadsheet basic filter when uploading data to an existing sheet in
|
||||
an existing file.
|
||||
Default: False
|
||||
todrive_clientaccess
|
||||
Enable/disable use of client access rather than service account access when uploading files with todrive
|
||||
Enable/disable use of client access rather than service account access when uploading files
|
||||
with todrive
|
||||
Default: False
|
||||
todrive_conversion
|
||||
Enable/disable conversion of CSV files to Google Sheets when todrive is specified
|
||||
@@ -636,8 +642,9 @@ todrive_user
|
||||
Email address of user to receive CSV files when todrive is specified
|
||||
Default: '' which becomes admin user in admin_email or address from oauth2.txt
|
||||
truncate_client_id
|
||||
Prior to version 6.74.00, GAM stripped '.apps.googleusercontent.com' from the client_id in oauth2.txt
|
||||
and passed the truncated value in API calls; this is no longer performed unless truncate_client_id is true
|
||||
Prior to version 6.74.00, GAM stripped '.apps.googleusercontent.com' from the client_id
|
||||
in oauth2.txt and passed the truncated value in API calls; this is no longer performed
|
||||
unless truncate_client_id is true
|
||||
Default: False
|
||||
update_cros_ou_with_id
|
||||
Update the OU of a Chromebook with the OU ID rather than the OU path.
|
||||
@@ -675,7 +682,7 @@ user_service_account_access_only
|
||||
```
|
||||
This is sample output:
|
||||
```
|
||||
$gam select default verify.
|
||||
$gam select default verify
|
||||
Config File: /Users/admin/.gam/gam.cfg, Initialized
|
||||
Section: DEFAULT
|
||||
activity_max_results = 100
|
||||
@@ -802,6 +809,33 @@ Section: DEFAULT
|
||||
user_service_account_access_only = false
|
||||
```
|
||||
|
||||
## Set configuration variables
|
||||
You can set variables in gam.cfg with an editor or from the command line with GAM.
|
||||
|
||||
```
|
||||
<Config> ::=
|
||||
config (<VariableName> [=] <Value>)* [save] [verify [variables <RESearchPattern>]]
|
||||
```
|
||||
- `<VariableName> [=] <Value>`
|
||||
- Set `<VariableName> = <Value>` in the current section
|
||||
- All `<VariableNames>` except section are allowed.
|
||||
- The `=` is optional but must be surrounded by spaces if included.
|
||||
- `save`
|
||||
- Write configuration data to gam.cfg
|
||||
- `verify`
|
||||
- Print the variable values for the current section
|
||||
- Use `variables <RESearchPattern>` to display variables with names selected by `<RESearchPattern>`
|
||||
- Values are determined in this order: Current section, DEFAULT section, Program default
|
||||
|
||||
You can prefix `<Config>` with `<Select>` to set a variable in a particular section.
|
||||
* `select default <Config>` - Set a variable in the `DEFAULT` section
|
||||
* `select xyz <Config>` - Set a variable in the `xyz` section
|
||||
|
||||
For example, to set yiur workspace Customer ID and domain name:
|
||||
```
|
||||
gam config customer_id C0123abc domain mydomain.org save
|
||||
```
|
||||
|
||||
## Multiple Computers
|
||||
You can install GAM on multiple computers, all using the same project. After installing GAM on your
|
||||
initial computer, follow these quidelines.
|
||||
@@ -849,7 +883,7 @@ it's how you quickly switch from from one client to another.
|
||||
|
||||
The arguments are optional, must appear in this order and must be the first arguments before any other GAM arguments.
|
||||
```
|
||||
select <Section> [save] [verify]
|
||||
select <Section> [save] [verify [variables <RESearchPattern>]]
|
||||
Use <Section> from gam.cfg for the current GAM command.
|
||||
<Section> is case-sensitive except for DEFAULT which is case-insensitive.
|
||||
save
|
||||
@@ -857,6 +891,7 @@ select <Section> [save] [verify]
|
||||
Write configuration data to gam.cfg
|
||||
verify
|
||||
Print the variable values for the current section
|
||||
Use `variables <RESearchPattern>` to display variables with names selected by `<RESearchPattern>`
|
||||
Values are determined in this order: Current section, DEFAULT section, Program default
|
||||
```
|
||||
Display all of the sections in gam.cfg and mark the currently selected section with a *.
|
||||
@@ -865,7 +900,7 @@ showsections
|
||||
```
|
||||
The config argument is used to set selected variables in gam.cfg via the command line.
|
||||
```
|
||||
config [<VariableName> [=] <Value>]* [save] [verify]
|
||||
config [<VariableName> [=] <Value>]* [save] [verify [variables <RESearchPattern>]]
|
||||
<VariableName> [=] <Value>
|
||||
Set <VariableName> = <Value> in the current section
|
||||
All <VariableNames> except section are allowed.
|
||||
@@ -874,6 +909,7 @@ config [<VariableName> [=] <Value>]* [save] [verify]
|
||||
Write configuration data to gam.cfg
|
||||
verify
|
||||
Print the variable values for the current section
|
||||
Use `variables <RESearchPattern>` to display variables with names selected by `<RESearchPattern>`
|
||||
Values are determined in this order: Current section, DEFAULT section, Program default
|
||||
|
||||
redirect csv <FileName> [multiprocess] [append] [noheader] [charset <Charset>] [columndelimiter <Character>]
|
||||
|
||||
Reference in New Issue
Block a user