Latest updates
Added option showsize
to gam <UserTypeEntity> print|show filecounts
that displays the
size (in bytes) of the files counted.
Following Jay's lead, added commands to display ChromeOS device telemetry data.
To use these commands you must authorize an additional scope:
Chrome Management API - Telemetry read only
gam oauth create
Added option reverselists <ListFieldNameList>
to commands that display ChromeOS device information.
For each list in <ListFieldNameList>
, the list order is changed from ascending (oldest to newest) to descending (newest to oldest);
this makes it easy to get the N
most recent values with listlimit N reverselists <ListFieldNameList>
.
Added options parentselector <OrgUnitSelector>
and childselector <OrgUnitSelector>
to
gam print orgs|ous
that add an additional column orgUnitSelector
to the output. This column
value can be used in subsequent gam csv
commands to appropriately select members without duplication.
<OrgUnitSelector> ::=
cros_ou | cros_ou_and_children|
ou| ou_ns | ou_susp|
ou_and_children | ou_and_children_ns | ou_and_children_susp
Get file count summaries by OU; top level selector is ou, sub level selectors are ou_and_children
gam redirect csv ./TopLevelOUs.csv print ous showparent toplevelonly parentselector ou childselector ou_and_children fields orgunitpath
gam redirect csv ./FileCounts.csv multiprocess csv ./TopLevelOUs.csv gam "~orgUnitSelector" "~orgUnitPath" print filecounts excludetrashed summary only summaryuser "~orgUnitPath"
Updated error handling in gam <UserTypeEntity> copy drivefile
when copying files to a shared drive folder.
Added option summaryuser <String>
to gam <UserTypeEntity> print filecounts
and
gam <UserTypeEntity> print filelist countsonly
that replaces the default summary user Summary
with <String>
.
gam redirect csv ./FileCounts.csv multiprocess csv ./OUs.csv gam ou_ns "~orgUnitPath" print filecounts excludetrashed summary only summaryuser "~orgUnitPath"
Uodated `gam update drivefile teamdriveparentid
to handle the following error:
ERROR: 400: shareOutNotPermitted - Bad Request. User message: "shareOutNotPermitted"
Fixed bug in gam <UserTypeEntity> copy drivefile
where contentManager|fileOrganizer
ACLs
were not copied from a source shared drive folder to a target shared drive folder.
Fixed bug where redirect csv - multiprocess todrive redirect stdout - multiprocess
would disable
multiprocess
for redirect csv
which resulted in multiple files being uploaded.
Added option showshareddrivepermissions
to gam <UserTypeEntity> show fileinfo <DriveFileEntity>
that is applicable
when no fields are selected and <DriveFileEntity>
is a shared drive file/folder. In this case,
the Drive API returns the permission IDs but not the permissions themselves so GAM makes an additional API call
to get the permissions.
Added option showshareddrivepermissions
to gam <UserTypeEntity> print filelist
that is applicable
when no fields are selected and shared drives are queried/selected. In this case,
the Drive API returns the permission IDs but not the permissions themselves so GAM makes an additional API call
per file to get the permissions.
Added commands that can process lists of Gmail labels.
Updated gam info|print cros showdvrsfp formatjson
to include diskVolumeReports.volumeInfo.storageFreePercentage
.
Improved error messages for gam create resource
when options capacity <Number>
and floor <String>
are required but not provided.
Added option showdvrsfp
to gam info|print cros
that causes GAM to display a field
diskVolumeReports.volumeInfo.storageFreePercentage
which is calculated as:
(diskVolumeReports.volumeInfo.storageFree/diskVolumeReports.volumeInfo.storageTotal)*100
You can use an output row filter to only show ChromeOS devices with a limited amount of free space:
config csv_output_row_filter "diskVolumeReports.volumeInfo.0.storageFreePercentage:countrange=1/15"
Usecountrange=1/15
instead ofcount<15
as the latter will display ChromeOS devices with no
diskVolumeReports; a blank entry is treated as a zero.
ChromeOS devices can have multiple diskVolumeReports; some experimentation may be required to
get the desired results.
The 6.12.02 bug fix in gam <UserTypeEntity> print|show filetree select <DriveFileEntity>
was too aggressive; when showing a file tree, folders owned by others must be processed
so that files owned by the user within those folders are displayed.
When running gam oauth create
and gam.cfg no_browser = true
, the authorization link is
no longer copied to the file gamoauthurl.txt
as this functionality required modifying
a Google supplied library.
Removed the option writeurltofile
from gam check| svcacct
that caused GAM to write
the authorization link to the file gamsvcaccturl.txt
.
Fixed bug in gam <UserTypeEntity> print|show filetree select <DriveFileEntity>
where
file ownership was not being checked which resulted in files not owned by the user being displayed.
Updated code to perform retries when a serviceNotAvailable
error occurs when listing file permissions.
Fixed bug in gam <UserTypeEntity> copy drivefile <DriveFileEntity> <DriveFileParentAttribute> recursive
that mis-copied files when the target parent folder <DriveFileParentAttribute>
was within the folder structure of <DriveFileEntity>
.
Fixed bug in gam <UserTypeEntity> check drivefileshortcut <DriveFileEntity> csv
that caused a trap.
Added command gam <UserTypeEntity> delete labelid <LabelID>
that is used to
delete Gmail labels by ID rather than by name.
Fixed bug in 6.11.05 for updating Chromebook OU by ID.
Added update_cros_ou_with_id
variable to gam.cfg
that causes GAM to update
the OU of a Chromebook with the OU ID rather than the OU path.
Set this value to true if you are getting the following error:
400: invalidInput - Invalid Input: Inconsistent Orgunit id and path in request
When specifying <UserAttribute> languages
, it is an error to specify a custom language with a preference suffix +-
.
Added option includederivedmembership
to gam print|show cigroup-members
.
This option causes the API to list indirect members of groups.
See: https://github.com/taers232c/GAMADV-XTD3/wiki/Cloud-Identity-Groups-Membership
Updated gam oauth export|refresh
to privent the following error.
ERROR: Authentication Token Error - Not all requested scopes were granted by the authorization server, missing scopes , https://sitesgooglecom/feeds, https://wwwgooglecom/m8/feeds
Added option noinvitablecheck
to gam whatis <EmailItem>
that suppresses the user invitation check
to avoid exceeding quota limits when checking a large number of addresses.
Following Jay's lead, updated processing of <UserAttribute> languages
.
You could always set a user's languages via the API; Google has added the ability to
indicate whether a language is preferred
or not_preferred
. This is implemeted in
GAM by optionally appending a +
to a language code to set preferred
and a '-' to set not_preferred
.
In the user's profile, only preferred
languages are displayed.
gam update user user@domain.com languages en+,fr+.
Updated all Cloud Identity API group calls to use version v1
of the API rather than version v1beta1
.
Added option nobatchupdate
to gam <CrOSTypeEntity> update ou <OrgUnitPath>
and
gam update cros <CrOSEntity> ou <OrgUnitPath>
that prevents GAM from using batch mode
to update the devices; this allows handling the rateLimitExceeded
error described below.
Updated code to to handle the following error as retryable:
403: rateLimitExceeded - Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'admin.googleapis.com' for consumer 'project_number: (project)'
Updated gam print groups
and gam print|show group-members
to allow identification of groups
with the All users in the organization
member with: member id:<CustomerID>
.
Upgraded to Python 3.10.1
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