github taers232c/GAMADV-XTD3 v6.08.29
GAM 6.08.29

latest releases: v7.00.38, v7.00.37, v7.0036...
3 years ago

Latest updates

Added options onerowpertarget and suppressnoaliasrows to gam print aliases.

By default, the CSV output has three columns: Alias,Target,TargetType; if a target
has multiple aliases, there will be multiple rows, one per alias. Specifying onerowpertarget changes
the three columns to: Target,TargetType,Aliases; all aliases for the target are space-separated in the
Aliases column.

Specifying both onerowpertarget and suppressnoaliasrows causes GAM to not display any targets that have no aliases.

Added command gam remove aliases|nicknames <EmailAddress> user|group <EmailAddressEntity> to more efficiently
delete the aliases in <EmailAddressEntity> from the user|group <EmailAddress>.

You can combine these two changes as follows:

gam redirect csv ./OldDomainAliases.csv print aliases aliasmatchpattern ".*@olddomain.com" onerowpertarget suppressnoaliasrows
gam csv ./OldDomainAliases.csv gam remove aliases "~Target" "~TargetType" "~Aliases"

Fixed bug in gam user user@domain.com sendemail ... ghtml ... that caused an inappropriate error.

ERROR: User: user@domain.com, Drive File: Email Doc, Data Not Retrieved: Invalid mimeType application/vnd.google-apps.document, must be text/html

Updated Google API libraries.

Reverted update 6.08.26 as it couldn't accurately distinguish between the following cases in all instances:

  • A Service Account scope is not authorized
  • A user with a service disabled
  • A user from outside your domain

Improved the error message displayed when a Service Account scope is not authorized so it
can be distinguished from a user with the service disabled.

Updated gam create|use project to handle the following spurious Google error:

ERROR: 500: Failed to convert server response to JSON - 500

Fixed bug in gam <UserTypeEntity> print|show contacts fields ... that caused an error
when retrieving other contacts.

Revert Google Auth library to version 2.0.2 to avoid the following error:

ERROR: Token used too early, 1634572527 < 1634572532. Check that your computer's clock is set correctly.

Updated code to format Google timestamps with fractional seconds, e.g., 2021-10-13T13:35:42.590124Z
and timezone = utc in gam.cfg.

Fixed bug in gam create|clear|dedup|delete|info|print|show|update contacts where
the command would fail if the domain was not defined in gam.cfg

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.

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.

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

Don't miss a new GAMADV-XTD3 release

NewReleases is sending notifications on new releases.