Latest updates
Fixed bug gam <UserTypeEntity> print contactdelegates
that caused a trap.
Updated gam print|show ownership
to display the event name of the most recent
primary event. If the event name is delete
, then you'll know who the owner was
but won't be able to do much with the file.
Fixed bug in gam update group
where field memberKey
was mistakenly converted to preferredMemberKey
;
this caused a trap.
Updated code to work around issue in Cloud Identity Groups API where a group member of
type CUSTOMER
is not properly marked as that type; this caused a trap.
Fixed bug in gam show cigroup-members
where the deprecated field memberKey
was still being used;
it was replaced with preferredMemberKey
.
Fixed bug in metacommand multiprocessexit
where GAM would not terminate when the condition was met
by one process while multiple other processes termintated simultaneously with the condition not met.
In 6.07.24, delivery_settings
was added to the default list of fields in gam print group-members
.
Unfortunately, it is still the case that an additional API call per member is required to get this setting;
this makes getting group members very slow for large groups.
delivery_settings
has been removed from the default list of fields and the option showdeliverysettings
adds this field to the default list of fields. You can always specify a specific list of fields that includes
delivery_settings
.
Fixed bug in gam redirect csv ... multiprocess ...
that caused a trap when running on Windows.
Fixed bugs in gam <UserTypeEntity> copy othercontacts
that rendered it unusable; sigh.
Following Jay's lead, added support for newly announced group member restrictions.
You can update groups to restrict membership to only include users, groups or service accounts as well as internal users and groups.
- See: https://workspaceupdates.googleblog.com/2021/10/membership-restrictions-google-groups-.html
In the API, these member restrictions fall with a category calledSecuritySettings
.
Added option nosecuritysettings
to gam info cigroups <GroupEntity>
. By default, GAM
makes an additional API call to get the SecuritySettings
; this option suppresses that call.
Added option memberrestrictions <QueryMemberRestrictions>
to gam update cigroups <GroupEntity>
to define member restrictions.
- See: https://cloud.google.com/identity/docs/reference/rest/v1beta1/SecuritySettings#MemberRestriction
Added option memberrestrictions
to gam print cigroups
that causes GAM to make an
additional API call to get the member restrictions from the SecuritySettings
.
Added (json [charset <Charset>] <JSONData>)|(json file <FileName> [charset <Charset>])
to <PrinterAttribute>
that allows specification of printer attributes from JSON data in gam create|update printer
.
<PrinterAttribute> ::=
(description <String>)|
(displayname <String>)|
(json [charset <Charset>] <JSONData>)|(json file <FileName> [charset <Charset>])|
(makeandmodel <String>)|
(ou|org|orgunit <OrgUnitItem>)|
(uri <String>)|
(driverless [<Boolean>])
Added option copysheetprotectedranges [<Boolean>]
to gam <UserTypeEntity> copy drivefile
that causes
GAM to copy the Google Sheet permissions and protected ranges from the source file to the target file.
Updated gam update cigroups <GroupEntity> update [<GroupRole>] expires <Time> <UserTypeEntity>
to handle the following error:
ERROR: 403: permissionDenied - Error(3005): Non-premium customers do not have access to certain premium features.
Fixed bug in gam <UserTypeEntity> clear contacts
that caused a trap.
Changed license SKU Google-Apps
name Google Workspace Free/Standard
to G Suite Legacy
to be
consistent with Google.
Updated all commands that reference Cloud Identity Group members to use the field preferredMemberKey
rather than the deprecated field memberKey
which would cause traps.
Fixed bug in gam <UserTypeEntity> create|update contact json <JSONData>
that failed to delete
the read-only field updateTime
which caused the command to fail.
Added the following keyword to gam.cfg
that causes GAM to add a timestamp column
to the CSV output file; the value in each row is time at which the command started.
csv_output_timestamp_column
Name of column in the CSV output file to contain a timestamp
Default: ''
Added option timestampcolumn
to <Redirect>
that causes GAM to add a timestamp column labeled <String>
to the output CSV file; the value in each row is time at which the command started.
This overrides the csv_output_timestamp_column
value in gam.cfg
.
<Redirect> ::=
redirect csv <FileName> [multiprocess] [append] [noheader] [charset <Charset>]
[columndelimiter <Character>] [quotechar <Character>]
[timestampcolumn <String>]
[todrive <ToDriveAttribute>*] |
Added formatjson
to gam info|show resoldsubscriptions
and formatjson [quotechar <Character>]
to gam print resoldsubscriptions
.
Handle the following error as retryable when managing user's contacts:
ERROR: API access Denied
Added option addcsvdata <FieldName> <String>
to gam create drivefile ... csv
. This adds
additional columns of data to the CSV file output. For example, you are building student folders
on a Shared Drive as an admin and want to add ACLs to the folders allowing the student write access
and you want a shortcut on the student's My Drive pointing to the folder. By adding the student's
primary email address to the CSV output, it can be used in subsequent commands.
Students.csv
primaryEmail,Name
bob@domain.com,Bob Jones
mary@domain.com, Mary Smith
...
# Create the student folders on the Shared Drive
gam redirect csv ./StudentFolders.csv multiprocess csv Students.csv gam user admin@domain.com create drivefile mimetype gfolder drivefilena\
me "~~Name~~ Digital Portfolio" parentid <TeamDriveID> csv addcsvdata primaryEmail "~primaryEmail"
# Add ACLs granting the students write access to their folders; ~User refers to admin@domain.com
gam csv StudentFolders.csv gam user "~User" add drivefileacl "~id" user "~primaryEmail" role writer
# Add a shortcut to the folder on the student's My Drive
gam csv StudentFolders.csv gam user "~primaryEmail" create drivefileshortcut "~id" parentid root
Handle the following error in gam move drivefile
:
ERROR: 400: crossDomainMoveRestriction - Bad Request. User message: "crossDomainMoveRestriction"
Improved error messages when an unknown contact ID is used in a command.
Use Python library pathvalidate to clean up filenames in gam get drivefile|document
.
If you are using the source verson of GAMADV-XTD3, do the following command to update your Python libraries.
pip install --upgrade -r src/requirements.txt
Updated gam sync devices
to include the assetTag
field, if specified, as part of the device
comparison key in addition to serialNmmber
and deviceType
.
Fixed bug in gam create device
that caused a trap.
Updated gam print|show chromeapps|chromedevices|chromeversions
to handle the following error.
ERROR: 503: serviceNotAvailable - The service is currently unavailable.
GAM now uses the People API to manage user contacts rather than the Contacts API.
Most commands will work unchanged but Google has completely changed how the data is presented. If you
have scripts that process the output from print contacts
for example, they will have to be changed.
You might want to keep an older version of GAM available so you can compare the output from the two
versions and make adjustments as necessary.
This is work in progress, report issues/problems.
Installation
If you are a first time Gam user:
If you are upgrading from standard Gam
If you are upgrading from GAMADV-X or GAMADV-XTD