# Update GAMADV-XTD3 to latest version Automatic update to the latest version on Linux/Mac OS/Google Cloud Shell/Raspberry Pi/ChromeOS: - Do not create project or authorizations, default path `$HOME/bin` - `bash <(curl -s -S -L https://raw.githubusercontent.com/taers232c/GAMADV-XTD3/master/src/gam-install.sh) -l` - Do not create project or authorizations, specify a path - `bash <(curl -s -S -L https://raw.githubusercontent.com/taers232c/GAMADV-XTD3/master/src/gam-install.sh) -l -d ` By default, a folder, `gamadv-xtd3`, is created in the default or specified path and the files are downloaded into that folder. Add the `-s` option to the end of the above commands to suppress creating the `gamadv-xtd3` folder; the files are downloaded directly into the default or specified path. See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation. ### 6.63.06 Updated `cigroup` commands to handle the following error: ``` ERROR: 503: serviceNotAvailable - The service is currently unavailable. ``` ### 6.63.05 Updated `inboundsso` commands to handle the following error: ``` ERROR: 503: serviceNotAvailable - The service is currently unavailable. ``` ### 6.63.04 Added option `ignorerole` to `gam update groups|cigroups sync [|ignorerole] ... ` that causes GAM to remove members regardless of role and add new members with role MEMBER. This is a special purpose option, use with caution and ensure that `` specifies the full desired membership list of all roles. ### 6.63.03 Added option `externalusersallowed ` to `gam create chatspace` that allows creation of chat spaces that allow external users. Updated commands that process chat members to allow external users. ### 6.63.02 Fixed bug in `gam collect orphans` where shortcuts were being created unnecessarily when `useshortcuts` was false; either by default or when explicitly set. ### 6.63.01 Added `process_wait_limit` variable to `gam.cfg` that controls 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. The default is 0 which specifies no limit. Following Jay's lead, added option `alwaysevict` to `gam create|update user` that is used to specify GAM's behavior when `verifynotinvitable` is not specified and there is a conflict with an unmanaged account. By default, when creating a user that has a conflict with an unmanaged account, GAM will honor the setting on this page: * https://admin.google.com/ac/accountsettings/conflictaccountmanagement Specifying `alwaysevict` forces GAM to select this setting: `Replace conflicting unmanaged accounts with managed ones` With `gam update user`, `alwaysevict` only applies if `createifnotfound` is specified and the user was not found to update and must be created. ### 6.63.00 Added support for calendar working location events. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Calendars-Events#working-location-events ### 6.62.08 Added option `addcsvdata ` to these commands. This adds additional columns of data to the CSV file output when the `csv` option is used. ``` gam create contact gam create contact gam create contactgroup ``` ### 6.62.07 Added option `csv [todrive *]` to these commands that causes GAM to output the contact creator and contact ID in CSV form. This will be useful when bulk contacts are created. Added `returnidonly` to these commands that causes GAM to return just the contact ID as output. This will be useful in scripts that create a contact and then want to perform subsequent GAM commands on the contact. ``` gam create contact gam create contact gam create contactgroup ``` ### 6.62.06 Added output `Item cap` to `gam print filecounts select select ` that displays the total number of files/folders on the Shared Drive divided by 400000, the maximum number of file/folders on a Shared Drive. ### 6.62.05 Added progress messages (suppressible) to `gam print diskusage`. ### 6.62.04 Added command `gam print diskusage` to display disk usage by folder. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Drive-Files-Display#display-disk-usage ### 6.62.03 Handled Google Directory API bug in `gam print groups` that caused a trap. ### 6.62.02 Fixed bug introduced in 6.62.01 that caused a trap that broke `redirect csv ... multiprocess`. My apologies. ### 6.62.01 Updated code so that when `gam.cfg` variables `csv_output_timestamp_column` and `output_timeformat` are both specified, the timestamp is output in the alternate output time format. ### 6.62.00 Added `output_dateformat` and `output_timeformat` variables to `gam.cfg` that provide alternate output date and time formats that may be required by programs that will be processing the data. GAM will not accept alternate date/time formats as input. * See: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes ### 6.61.21 Updated `gam empty drivetrash ` to use new Drive API v3 functionality for emptying the trash of a Shared Drive with a single API call. Previously, GAM had to purge each individual file and folder in the trash. ### 6.61.20 Remove `audit.googleapis.com` from the list of project APIs. ### 6.61.19 Fixed bug in `gam print|show chatmembers ` that caused a trap. ### 6.61.18 Added the following options to `gam [] create shareddrive` to allow better control of the create/update process when attributes other than `themeid` are specified. ``` errorretries - Number of create/update error retries; default value 5, range 0-10 updateinitialdelay - Initial delay after create before update: default value 10, range 0-60 updateretrydelay - Retry delay when update fails; default value 10, range 0-60 ``` * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Shared-Drives#create-a-shared-drive ### 6.61.17 Updated `gam print|show vaultexports|vaultholds|vaultqueries` to not set a non-zero return code when a vault matter changes state from `OPEN` to `CLOSED|DELETED` while the command is being processed. Updated `gam create shareddrive ou|org|orgunit ` to handle the following error: ``` ERROR: 403: permissionDenied - Request had insufficient authentication scopes. ``` It's not clear what causes the error. ### 6.61.16 Added the following license SKUs. ``` 1010060005 - Google Workspace Essentials Plus 1010020031 - Google Workspace Frontline Standard 1010340005 - Google Workspace Business Starter - Archived User 1010340006 - Google Workspace Business Standard - Archived User ``` ### 6.61.15 Added option `contentrestrictions ownerrestricted []` to ``. ### 6.61.14 Added `aggregatebyuser [Boolean]` option to `gam report user` to allow data aggregation for users across multiple dates. Options `aggregatebyuser` and `aggregatebydate` are mutually exclusive. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Reports#user-reports ### 6.61.13 Added commands to display Analytic UA properties. ``` gam print analyticuaproperties [todrive *] accountid [accounts/] [maxresults ] [formatjson [quotechar ]] gam show analyticuaproperties accountid [accounts/] [maxresults ] [formatjson] ``` ### 6.61.12 Updated `gam print|show vaultexports|vaultholds|vaultqueries` to handle the case where a vault matter changes state from `OPEN` to `CLOSED|DELETED` while the command is being processed. ### 6.61.11 Added option `returnidonly` to `gam create vaultexport|vaulthold|vaultmatter` that causes GAM to return just the ID of the item created as output. ### 6.61.10 Fixed bug in `gam oauth create admin ` which caused no scopes to be selected. ### 6.61.09 Updated `gam oauth create` to handle case where Google takes a very long time to respond after you have allowed access to the scopes. ### 6.61.08 Updated `gam print messages showlabels` to include a column `LabelsCount` to display the number of labels a message has. Use option `useronly` to limit the labels to user labels. Updated `gam print messages` to display these columns, if applicable, as the last columns in the CSV file. ``` SizeEstimate, LabelsCount, Labels, Snippet, Body ``` ### 6.61.07 Improved action messages in `gam update org|ou sync [removetoou ]`. ### 6.61.06 Added option `csv` to `gam check group|groups` that displays the results in CSV format. ``` $ gam user testuser check groups csv testgroup1,testgroup2,alladmin User: testuser@domain.com, Check in 3 Groups user,group,role testuser@domain.com,alladmin@domain.com,Not a MEMBER|OWNER|MANAGER testuser@domain.com,testgroup1@domain.com,MEMBER testuser@domain.com,testgroup2@domain.com,MANAGER ``` ### 6.61.05 Fixed bug in `gam print contacts` that caused a trap when `show_gettings = False` in gam.cfg. ### 6.61.04 Updated `gam create shareddrive ` to wait longer between creating the Drive and updating any attributes that could not be specified as part of the creation; i.e., ``, `hidden`, `customtheme`, `color` and `orgunit`. The initial wait is 30 seconds. Previously, GAM was not waiting long enough; the Drive would be created but the update would fail; the attributes were not set. ### 6.61.03 Updated processing of ` externalid` to allow an empty `custom` type. ``` externalid account|customer|login_id|network|organization|(custom )| ``` These are equivalent ways of expressing an empty custom type: ``` externalid "" "Value" externalid custom "" "Value" ``` ### 6.61.02 Fixed bug in `gam update groups sync` introduced in 6.60.31 that caused this error: ``` ERROR: 409: generic409 - Member already exists. ``` ### 6.61.01 Added option `noactionifalias` to `gam delete groups ` that prevents GAM from deleting a group if `` specifies an alias rather than a primary email address. ### 6.61.00 Following Jay's lead, added `no_short_urls` variable to `gam.cfg`. When false, the long scopes URLs in `gam oauth create` and `gam check|update serviceaccount` will be shortened at the site `https://gam-shortn.appspot.com`; the shortened URL redirects to the long URL. For existing configurations, `no_short_urls` defaults to true; the long URLs are used as is. For new configurations the `no_short_urls` defaults to false unless there is a file named `noshorturls.txt` in the folder specified by the environment variable `OLDGAMPATH`. ### 6.60.31 Added option `addcsvdata ` to `gam print forms|formresponses`. This adds additional columns of data to the CSV file output. This can be used to combine form information from several GAM commands. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Forms#combine-form-information Following Jay's lead, projects can now be created with consumer accounts. ### 6.60.30 Added option `countsonly` to `gam print|show formresponses` that causes GAM to display the number of responses to a form rather than displaying the response details. ### 6.60.29 Updated `gam delete|print emptydrivefolders` to show the path to the deleted folder rather than just its name. Added an option to allow a starting point other that the root of My Drive or a Shared Drive. Improved the commands performance. ### 6.60.28 Fixed bug in `gam print filelist countsonly showsource stripcrsfromname` where carriage returns, linefeeds and nulls were not stripped from file names. ### 6.60.27 Updated `gam print filelist countsonly` to process `addcsvdata `. Additional fields are added before `Size` if present, otherwise `Total`. ### 6.60.26 Added option `orgunit|org|ou ` to `gam print|show teamdrives` that limits the display to Shared Drives in the specified Org Unit. ### 6.60.25 Added option `orgunit|org|ou ` to `gam print|show teamdriveacls` that limits the display of permissions to Shared Drives in the specified Org Unit. ### 6.60.24 Updated `gam info|show|print chatmessages` to show the sender email address when the sender is a human. ### 6.60.23 Fixed bug in `config csv_input_row_filter|csv_output_row_filter` where "field:date=today" was being processeed as "field:date>today". ### 6.60.22 Added option `pathdelimiter ` to `gam create drivefolderpath` to simplify specifying folder paths where a folder name contains a `/`. In the example, some folder has a '/' in it's name so specifying `pathdelimiter "|"` allows `fullpath` to be properly processed. `pathdelimiter` defaults to '/'. ``` gam user user@domain.com create drivefolderpath pathdelimiter "|" fullpath "My Drive|Top Folder|Middle/Folder|Bottom Folder" ``` ### 6.60.21 Fixed bug in `gam copy|create|update drivefile` where processing the following `` attributes was not correct. Previously, if multiple properties of the same visibility were specified, only the first was processed; now, all values are processed. ``` privateproperty publicproperty property [private|public] ``` ### 6.60.20 Updated `gam get document|drivefile ` to handle shortcuts by downloading the file that the shortcut references as the shortcut itself is not downloadable. If you do not want this behavior and want GAM to report an error, use the option `donotfollowshortcuts`. ### 6.60.19 Updated `gam archive messages` to handle the following error: ``` ERROR: 400: failedPrecondition - Precondition check failed. ``` ### 6.60.18 Updated `gam print|show tokens` to handle the following error that occurs when a group email address is specified rather than a user email address. ``` ERROR: 400: badRequest - Type not supported: userKey ``` ### 6.60.17 Fixed bug in `gam move drivefile` that caused an error when moving the contents of a source Shared Drive to a target Shared Drive when `mergewithparents` was not specified or was explicitly set False. ### 6.60.16 Updated commands that create files to handle the following error: ``` 403: storageQuotaExceeded - The user's Drive storage quota has been exceeded. ``` ### 6.60.15 Updated `gam print chromesnvalidity` to do case insenstitive serial number comparisons. ### 6.60.14 Added command to help verify Chrome device serial number validity. ``` gam print chromesnvalidity [todrive *] cros_sn [listlimit ] [delimiter ] ``` See: https://github.com/taers232c/GAMADV-XTD3/wiki/ChromeOS-Devices#check-chromeos-device-serial-number-validity ### 6.60.13 Updated `gam print|show chatspaces` to handle the following error: ``` Error: 403: permissionDenied - Permission denied to perform the requested action on the specified resource ``` ### 6.60.12 Added option `tdretaintitle []` that, when `True` (the default) and used with `tdfileid `, causes GAM to not modify the CSV filename. ### 6.60.11 Fixed bug in `gam print addresses` where non-editable user/group aliases were not displayed. ### 6.60.10 Added a command to get information about a direct message chat space between two users. ``` gam info chatspacedm [formatjson] ``` ### 6.60.09 Added option `csv [todrive *] [formatjson [quotechar ]]]` to these commands so that event details are displayed in CSV format. ``` gam calendar|calendars create|import|update event gam create|import|update event ``` Added option `additionalmembers [] ` to `gam update group|groups sync` that can be used to specify members in addition to those specified with ``. ``` gam update group teachers@domain.com sync member additionalmembers counselor@domain.com ou /Teachers ``` Added commands to display Analytic account/property/datastream information. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Analytics-Admin ### 6.60.08 Upgraded to Python 3.11.4 where possible. ### 6.60.07 Simplified specifying a Chat space name; previously, the `space` keyword was required; now, it can be omittted and you can just enter `spaces/`. ``` ::= spaces/ | space | space spaces/ ``` ### 6.60.06 Fixed bug in `gam print aliases` that caused a trap. ### 6.60.05 Updated Chrome Policy commands to handle the following error: ``` ERROR: 403: permissionDenied - The caller does not have permission. ``` ### 6.60.04 Updated `gam copy|move drivefile ` to disallow copying/moving a folder into itself. ### 6.60.03 Updated commands to delete chatmembers; `delete chatmembers` now deletes members by specifying a chat space and user email addresses; `remove chatmembers` deletes members by specifying chatmember names. ``` gam delete chatmember space ((user )|(members ))+ gam remove chatmember members ``` ### 6.60.02 Added option `` to `gam create chatspace` to allow sending an initial message to the newly created chatspace. ### 6.60.01 Updated `gam create chatspace` to support chatspace types `GROUP_CHAT` and `DIRECT_MESSAGE` and to allow specification of members. ### 6.60.00 Added initial support for user chat spaces. This is a work in progress, test and report any problems. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Chat Improved performance of `gam delete|move|update othercontacts`. Upgraded to OpenSSL 3.1.1 where possible. ### 6.59.18 Updated `gam update drivefile ` to handle the following error: ``` ERROR: 403: fileWriterTeamDriveMoveInDisabled - The domain administrator has not allowed writers to move items into a shared drive. ``` ### 6.59.17 Added option `pathdelimiter ` to the following commands that causes GAM to separate components in a folder path with `` rather than the default character `/`. This can help avoid confusion when Google folder names contain a `/`. Previously, on Windows, path components were separated by `\\` when written to a CSV file and `\` when written to stdout; now, `/` or `` will be used in all cases. ``` gam info drivefile gam show fileinfo gam print filelist gam print|show filepaths gam transfer ownership gam claim ownership ``` ### 6.59.16 Updated ` whocancontactowner` to include option `all_owners_can_contact`. ### 6.59.15 Updated error reporting in `gam delete|update chromepolicy ` to show the `` as originally entered when an unknown `` is specified; previously, it was shown in lowercase which could cause confusion. Updated column order in `gam print chromeschemas` to move `schemaName`, `policyDescription` and `policyApiLifecycle.*` to follow column `name`. Added columns `policyDescription` and `policyApiLifecycleStage` to `gam print chromeschemas formatjson` to follow column `name`. ### 6.59.14 Improve bug fix for `gam print groups|grouptree|groupslist`. ### 6.59.13 Fixed bug in `gam print groups|grouptree|groupslist` that caused the following error whan an email address contained an apostrophe. ``` WARNING: Got 0 Groups: Invalid Member - test.o'user@domain.com ``` Fixed bug in `gam print|show contacts ... filtercontactgroup ` that returned no contatcs when neither `allfields` or `fields ` was specifiecd. ### 6.59.12 Fixed bug in `gam create user ... immutableous ... createifnotfound` that generated the following error when the user `` did not exist and needed to be created. ``` User: , Service not applicable/Does not exist ``` ### 6.59.11 Updated `gam print|show chromepolicies` to query the following nameapaces when `namespace ` is not specified. Previously, only the namespaces marked with a `*` were queried. `chrome.devices.managedguest` was added in 6.59.10. ``` chrome.users * chrome.users.apps * chrome.users.appsconfig chrome.devices * chrome.devices.kiosk * chrome.devices.kiosk.apps chrome.devices.managedguest * chrome.devices.managedguest.apps chrome.networks.cellular chrome.networks.certificates chrome.networks.ethernet chrome.networks.globalsettings chrome.networks.vpn chrome.networks.wifi chrome.printers chrome.printservers ``` ### 6.59.10 Fixed bug in `gam print|show chromepolicies` where policies in namespace `chrome.devices.managedguest` were not displayed unless it was specified in `namespace `. Improved error messages in `gam move events`. ### 6.59.09 Added option `addnumericsuffixonduplicate ` to `gam create user ` that will attempt to create a unique `` when the original value is a duplicate user address. If `` is `@`, up to `` attempts will be made to create a unique ``; `` defaults to 0. ``` 1@ 2@ ... ``` ### 6.59.08 Fixed bug in `csv_output_row_filter "FieldName:dateNever"` that didn't properly detect matches. For example, the following command would not display users that had never logged in. ``` gam config csv_output_row_filter "lastLoginTime:date=Never" print users lastlogintime ``` ### 6.59.07 Added option `immutableous ` to `gam update user ... org ` that does not update the user's OU to `` if `` appears in ``. All other fields are updated. This can be used when a SIS outputs user data to be updated but students temporarily in special purpose OUs should not be updated to the SIS specified OU. `` and `` must both specify OU paths, not IDs. ``` gam csv SISdata.csv gam update user "~primaryEmail" suspended off firstname "~First Name" lastname "~Last Name" ou "~OU" immutableous "'/Students/Lower School/Restricted,'/Students/Middle School/Restricted'" ``` ### 6.59.06 Added option `sources ` to `gam print|show peopleprofile` that allows specification of the sources of the data to display. By default, data from all sources is displayed. ``` ::= account|accounts| domain|domains| profile|profiles ::= "(,)*" ``` Added option `updatefilepermissions []` to `gam move drivefile `. Previously, file permissions were not updated in the command; now, when `updatefilepermissions` is true, file permissions will be removed/created as specified by the following noptions: ``` excludepermissionsfromdomains includepermissionsfromdomains mappermissionsdomain ``` Additionally, permissions referencing deleted groups/users will be removed. The permissions are updated on the file before it is moved. Test before using in production. ### 6.59.05 Added option `includepermissionsfromdomains ` to the following commands that copies only those permissions that reference any domain in ``. It is mutually exclusive with `exludepermissionsfromdomains `. ``` gam copy|sync teamdriveacls gam copy|sync teamdriveacls gam copy|move drivefile ``` ### 6.59.04 Fixed bug in `gam print|show filesharecounts` where ACLs for deleted user/groups were miscounted as external shares. ### 6.59.03 Cleaned up `Getting/Got` messages for several commands. Improved performance of `gam print admins`. ### 6.59.02 Updated the Analytic account/property commands to use service account access so that data can be retrieved for any user. Fixed bug where the Analytics Admin API was not being added in `gam update project` forcing you to manually enable it. ### 6.59.01 Updated `gam checkconnection` to check connections to the following sites: ``` Contacts API - Domain Shared Contacts - www.google.com Email Audit API - apps-apis.google.com Sites API - sites.google.com ``` ### 6.59.00 Added commands to display Analytic account/property information. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Analytics-Admin ### 6.58.03 Fixed bug in `gam [] print shareddriveacls oneitemperrow shownopermissionsdrives true` where the Shared Drives with no ACLs were not shown; they were shown if `oneitemperrow` was omitted. ### 6.58.02 Updated `gam print filelist ... filepath|fullpath` to not display parent information for orphans. Previously, GAM would incorrectly display: ``` ...,parents,parents.0.id,parents.0.isRoot,... ...,1,Orphans,False,... ``` Now the corrected display is: ``` ...,parents,parents.0.id,parents.0.isRoot,... ...,,,,... ``` This change makes the output the same as when `filepath|fullpath` is omitted. ### 6.58.01 Added the following options to tag replace processing to allow control of the case of replacement data. You can control the case of the letters in `replace ` and `replace `. * `{PC}...{Tag1}...{Tag2}...{/PC}` - For all sequences of letters between `{PC}` and `{/PC}`, the first letter is converted to uppercase, subsequent letters to lowercase. * `{UC}...{Tag1}...{Tag2}...{/UC}` - All letters between `{UC}` and `{/UC}` will be converted to uppercase * `{LC}...{Tag1}...{Tag2}...{/LC}` - All letters between `{LC}` and `{/LC}` will be converted to lowercase ### 6.58.00 Added `license_max_results` variable to `gam.cfg`. When retrieving licenses from License API, this variable controls how many should be retrieved in each chunk. The default value is 100; the range is 100-1000. As of 2023-04-27, larger numbers cause Google to return an incorrect numbert of licenses. ### 6.57.11 Fixed bug where the `csv_output_header_force` variable in `gam.cfg` was being interpreted as a list of `` rather than a list of `` as documented. ### 6.57.10 When doing commands similar to these: ``` gam redirect csv - multiprocess todrive csv Users.csv gam user "~primaryEmail" print filelist ... gam config auto_batch_min 1 redirect csv - multiprocess todrive print filelist ... ``` GAM was including the name of the last user processed in the title of the uploaded Google Sheet; as this is not accurate, it has been eliminated. ### 6.57.09 Added `emailaddresslist ` to `` that allows matching any email address in a list. ### 6.57.08 Updated `gam print|show contacts|othercontacts` to retry the following error: ``` serviceNotAvailable - The service is currently unavailable. ``` ### 6.57.07 Updated code to recognize the following Google Drive API error that is issued when Google doesn't recognize an email address as valid. ``` $ gam user user@domain.com print filelist query "'j@ab.net' in writers" fields id,name Getting all Drive Files/Folders that match query ('me' in owners and ('j@ab.net' in writers)) for user@domain.com ERROR: 400: badRequest - Bad Request $ gam user user@domain.com print filelist query "'j@ab.com' in writers" fields id,name Getting all Drive Files/Folders that match query ('me' in owners and ('j@ab.com' in writers)) for user@domain.com Got 0 Drive Files/Folders that matched query ('me' in owners and ('j@ab.com' in writers)) for user@domain.com... Owner,id,name ``` ### 6.57.06 Added `inherited ` to `` that applies only to Shared Drive files/folders; this makes it easy to identify files/folders on Shared Drive with non-inherited permissions. ``` gam user organizer@domain.com print filelist select teamdriveid fields id,name,mimetype pm inherited false em pmfilter oneitemperrow ``` This clause will always cause a permission match failure on My Drive files/folders. ### 6.57.05 Updated `gam batch ` and `gam tbatch ` commands to accept lines with the following form: ``` clear keyword ``` This can improve performance as subsequent lines in `` will not be scanned for `%keyword%`. ### 6.57.04 Updated `gam batch ` and `gam tbatch ` commands to accept lines with the following form: ``` set keyword value ``` Subsequent lines in `` will have `%keyword%` replaced with `value`. ### 6.57.03 Updated `gam info|print|show contacts|othercontacts` and `gam info|print|show peoplecontacts|peopleprofiles` to default to displaying the fields `names,emailaddresses,phonenumbers` as documented rather than all fields. ### 6.57.02 Following Jay's lead, removed Google bug (237397223) workaround code in `gam print devices|deviceusers|crostelemetry` as the bug is now fixed. ### 6.57.01 Updated `gam vacation` to handle the following error: ``` ERROR: 400: failedPrecondition - Precondition check failed. ``` What the error means is unknown to me at the moment. Updated GAM so that when the current project ID is required, it will first try to get it from oauth2service.json and if not successful, try to get it from client_secrets.json. There are cases, e.g., when DASA is enabled, that client_secrets.json is not present. Previously, GAM checked for the existence of client_secrets.json on every command; this check has been eliminated as the file is only required by `gam oauth create`. ### 6.57.00 Following Jay's lead, updated `gam create admin` to allow assignment of a delegated admin role to a group. Updated `gam print admins` to display whether a role is assigned to a user or a group. Updated version number to align with Standard GAM. ### 6.54.06 Added options `users ` and `groups ` to `gam print aliases` that is more efficient for getting aliases for specific users and groups. Added option `select ` to `gam print aliases` that allows specification of a list users by ``; e.g., a group or an org unit. Added option `delimiter ` to `gam print aliases` that is applicable when option `onerowpertarget` is specified. Previously, multiple aliases were separated by a space character. Now, by default, the aliases are separated by the `csv_output_field_delimiter' from `gam.cfg`. The option `delimiter ` overrides that value. ### 6.54.05 Added option `addcsvdata ` to `gam print aliases`. This adds additional columns of data to the CSV file output. This can be used when printing aliases for departed employees to indicate the new target for the user's alises. Subsequent commands using the CSV file can reassign the aliases to the new target. ### 6.54.04 Updated `gam print|show channelcustomerentitlements` to handle the following error when none of `gam.cfg/channel_customer_id` or command line arguments `channelcustomerid` or `name` are set. ``` ERROR: Parameter "parent" value "accounts/C03kt1789/customers/" does not match the pattern "^accounts/[^/]+/customers/[^/]+$" ``` ### 6.54.03 By special request, British spelling of various keywords/arguments is now available. ``` backgroundcolor backgroundcolour color colour colorindex colourindex costcenter costcentre fileorganizer fileorganiser foregroundcolor foregroundcolour license licence licenses licences nolicenses nolicences organization organisation organizationname organisationname organizations organisations organizer organiser organizeremail organiseremail organizername organisername textcolor textcolour ``` ### 6.54.02 Updated `gam get photo` and `gam get profilephoto` to inspect the photo data and add the appropriate extension: `jpg`, `png`, `gif`. If the type of the photo can't be determined, `img` is used as the extenstion. If you use `[filename ]`, `#ext#` will be replaced with the extension. Updated `gam [create|add] sendas [name] ` to allow the optional argument `name` before `` to make clear that `` is the sendas display name. ### 6.54.01 Added commands to export messages/threads in EML/raw format. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Gmail-Messages-Threads#export-messagesthreads ### 6.54.00 Following Jay's lead, updated `gam delete inboundssoassignment ` to allow more flexibility in selecting assignments to delete. Fixed bug in `gam print|show filesharecounts` that would cause a trap. Updated `gam print filelist ... fullpath showparent` and `gam print filepath` to properly display the file path of My Drive. Upgraded to Python 3.11.3 where possible. Added commands to create and delete Chrome networks. ``` gam create chromenetwork gam delete chromenetwork ``` ### 6.53.03 `gam gam print|show svcaccts` now requires password authentication. ### 6.53.02 Added commands to display the share type counts of a user's files. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Drive-Files-Display#display-file-share-counts ### 6.53.01 Following Jay's lead, added instructions to `gam create project` to have GAM be a trusted app. ### 6.53.00 Updated build steps to avoid trap with `gam create project` on M1 Macs. Added option `noshowtextplain` to `gam show messages|threads` that suppresses the default display of `text/plain` attachment content when `showattachments` is specified. ### 6.52.08 Added `maximumfilesize ` to the following commands to allow selection of files with content of size <= ``. ``` gam print filelist gam print|show filetree gam print|show filecounts ``` Added field `workinglocationproperties` to ``. * See: https://workspaceupdates.googleblog.com/2023/03/manage-working-location-feature-with-calendar-api.html ### 6.52.07 Fixed bug in `gam copy drivefile` that caused the following error: ``` ERROR: 403: parentNotAFolder - The specified parent is not a folder. ``` Current time is now printed in `gam version`. ### 6.52.06 Updated `gam create|update drivefile` to handle the following error that occurs when an attempt is made to create/move a third-party shortcut on/to a Shared Drive. ``` ERROR: 403: teamDrivesShortcutFileNotSupported - The application associated with this third-party shortcut file does not support shared drives. ``` ### 6.52.05 Added option `formatjson` to all commands that display Vault Matters, Exports, Holds adn Saved Queries. Updated `gam move drivefile` to handle the following error that occurs when an attempt is made to move a third-party shortcut to a Shared Drive. ``` ERROR: 403: teamDrivesShortcutFileNotSupported - The application associated with this third-party shortcut file does not support shared drives. ``` ### 6.52.04 Fixed bug in `gam info vaultquery` and `gam print|show vaultqueries` that caused a trap when the `query` field was omitted from the `fields `. ### 6.52.03 Added commands to display Vault Matter saved queries. ``` gam info vaultquery matter [fields ] [shownames] gam info vaultquery [fields ] [shownames] gam print vaultqueries [todrive *] [matters ] [fields ] [shownames] gam show vaultqueries [matters ] [fields ] [shownames] ``` Updated `gam info resoldcustomer ` to display the customer primary email. Following Jay's lead, the following scopes will be off by default as changes to Google Cloud session control may require frequent use of `gam aouth create`. * See: https://workspaceupdates.googleblog.com/2023/03/google-cloud-session-length-default-update.html * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Authorization#introduction ``` [ ] 21) Cloud Storage API (Read, Vault/Takeout Download) [ ] 22) Cloud Storage API (Write, Vault/Takeout Copy) ``` ### 6.52.02 Following Jay's lead, added the following License SKUs: ``` 1010380001 - AppSheet Core 1010380002 - AppSheet Enterprise Standard 1010380003 - AppSheet Enterprise Plus ``` ### 6.52.01 Fixed bug where `API calls retry data` was displaying incorrect values when processing CSV files. ### 6.52.00 Updated process handling for `gam batch|csv`. ### 6.51.08 Updated `gam create|update user ... ` to exclude additional fields from the JSON data that can't be copied; the following error was displayed: ``` User: user@domain.com, Create Failed: Invalid Input: Bad request for ``` ### 6.51.07 Fixed bug introduced in 6.51.06 that caused a trap in `gam create project`. ### 6.51.06 Following Jay's lead, added option `validityhours ` to `gam create|replace|update sakeys` and `gam rotate sakey` that let's you set the length of time a Service Account key is valid. ### 6.51.05 With input from Jay, further upgraded `gam check serviceaccount` to avoid a trap when a proxy is being used. ### 6.51.04 Upgraded `gam check serviceaccount` to avoid a trap when a proxy is being used. ### 6.51.03 * Upgraded to OpenSSL 3.1.0 where possible. ### 6.51.02 Added support for `externalid`, `im`, `posix`, `relation`, `sshkeys` and `website` subfields in `gam signature` and `gam create|update sendas` option `replace `. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Tag-Replace ### 6.51.01 Added option `nogcspath` to `gam download storagefile ` that causes GAM to store the downloaded file directly into the target folder without any Google Cloud Storage path information. ### 6.51.00 Added the ability to read data from Google Cloud Storage bucket objects. ``` ::= ::= ::= https://storage.cloud.google.com//| https://storage.googleapis.com//| gs:///| / ``` Anywhere you can enter `gdoc|ghtml )` you can enter `gcsdoc|gcshtml `. Anywhere you can enter `gsheet )` you can enter `gcscsv `. The Type of the Cloud Storage bucket objects must match the option keyword. * gcsdoc - text/plain * gcshtml - text/html * gcscsv - text/csv These options require that scope `Cloud Storage (Read, Vault/Takeout Download)` be enabled in `gam oauth create`. Added a command to download a Cloud Storage bucket object. ``` gam download storagefile [targetfolder ] ``` ### 6.50.14 Fixed bug in `gam copy drivefile` that caused a trap. Fixed bug where `removefeature` but not `removefeatures` was recognized in `gam update resource`. ### 6.50.13 Added options `addfeatures ` and `removefeatures ` to ``. These can be used in in the following commands to make incremental changes to resource features. ``` gam update resource * gam update resources * ``` Updated processing of `` which is a `` to properly handle `s` containing spaces. When entering `` with `s`containing spaces, enclose the list in `"` and the names containing spaces in `'`. ``` features "CameraSet" features "'Laptop Cart'" features "CameraSet,'Laptop Cart'" ``` ### 6.50.12 Handle new trap in `gam forward messages`. ### 6.50.11 Handle new trap in `gam forward messages`. ### 6.50.10 Fixed bug in `gam forward messages altcharset ` where `` was marked as an invalid argument. Updated `gam copy drivefile ` to allow copying Google Sites. ### 6.50.09 Added command `gam info adminrole [privileges]` that displays a specific admin role and optionally its privileges. Added option `privileges` to `gam print|show admins` that displays the privileges for each role for the admin. ### 6.50.08 Added option `altcharset ` to `gam forward messages` to attempt to handle errors like the following which occur when the message can not be decoded with character set UTF-8. You can specify an alternate character set, e.g. latin1, that is used if the UTF-8 decode fails. ``` UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 1643: invalid start byte ``` ### 6.50.07 Fixed build bug that caused the following error: ``` ERROR: Discovery File: /usr/local/gamadv-xtd3/datastudio-v1.json, Does not exist or has invalid format, No data ``` ### 6.50.06 Fixed bug in `gam report usage customer` where an extraneous column `email` was displayed. ### 6.50.05 Fixed bug in `gam update resoldsubscription` that caused an error: ``` ERROR: 400: invalid - The seats provided are not valid ``` ### 6.50.04 Added `allowcontentmanagerstosharefolders` to `` that is used in `gam create|update teamdrive`. This terminology matches the Admin console setting `Allow Content Managers to share folders`. Each pair of commands below are equivalent: ``` gam update teamdrive allowcontentmanagerstosharefolders true gam update teamdrive sharingfoldersrequiresorganizerpermission false gam update teamdrive allowcontentmanagerstosharefolders false gam update teamdrive sharingfoldersrequiresorganizerpermission true ``` Updated status reporting in `gam update chromepolicy` to supply more details. Fixed bug in `gam update chromepolicy` when processing an schema field with an empty list. ### 6.50.03 Fixed bug in `gam update resoldsubscription` that caused an error: ``` ERROR: 400: invalid - Request contains an invalid argument. ``` ### 6.50.02 Fixed bug in `gam create project` where invalid data was written to client_secrets.json. ### 6.50.01 Fix YubiKey issue that caused a trap. ### 6.50.00 Following Jay's lead (with many thanks), added commands to enable running GAM securely on a Google Compute Engine. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Running-GAMADV-XTD3-securely-on-a-Google-Compute-Engine * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Using-GAMADV-XTD3-with-a-delegated-admin-service-account Following Jay's lead (with many thanks), added commands to enable using a Yubikey. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Using-GAMADV-XTD3-with-a-YubiKey These Wiki pages are a work in progress, contact me if you need help. Updated handling of `seats` option in `gam create|update resoldsubscription` to properly assign the API fields `numberOfSeats` and `maximumNumberOfSeats`. Previously, this is how the option was processed: * Plan name `ANNUAL_MONTHLY_PAY` or `ANNUAL_YEARLY_PAY` * `seats ` - `` was properly passed to the API * `seats ` - `` was properly passed to the API; `` was passed to the API which ignored it * Plan name `FLEXIBLE` or `TRIAL` * `seats ` - `` was improperly passed to the API; an API error was generated * `seats ` - `` was properly passed to the API; `` was passed to the API which ignored it Now, you can still use the above option which has been corrected or you can specify `seats ` which will be properly passed in the correct form to the API based on plan name. Hopefully fixed a bug in `gam forward messages` that caused a trap when the subject contained Latin-1 characters. ### 6.42.10 Added option `accesstype public|team|announcementonly|restricted` to `gam create|update group`. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Groups#gui-api-group-access-type-settings-mapping ### 6.42.09 Cleaned up output in `gam print crostelemetry`; fields that are lists weren't being correctly sorted by index. ### 6.42.08 Added additional fields to ``: ``` audiostatusreport| bootperformancereport| networkinfo| networkdiagnosticsreport| peripheralsreport| thunderboltinfo| networkdevices| ``` ### 6.42.07 Improved `gam create|add drivefolderpath` to allow specifying paths as returned by `gam print filepath`. ### 6.42.06 Fixed another bug in `gam create|add drivefolderpath` that failed when trying to build a folder hierarchy on a Shared Drive. ### 6.42.05 Fixed bug in `gam create|add drivefolderpath` that failed when trying to build a folder hierarchy on a Shared Drive. ### 6.42.04 Added a command that creates a folder hierarchy. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Drive-Files-Manage#create-folder-hierarchy ### 6.42.03 Updated `gam get drivefile ... csvsheet ` to allow selection of the output format with `format `. Previously, `csv` was always selected and it is still the default. Valid formats are: `csv,tsv,ods,pdf,xlsx`. ### 6.42.02 Added `sha1checksum` and `sha256checksum` to ``. ``` The SHA1/SHA256 checksum associated with a file, if available. This field is only populated for files with content stored in Google Drive; it isn't populated for Docs Editors or shortcut files. ``` Added option `addcsvdata ` to `gam print filelist` and `gam print ownership`. This adds additional columns of data to the CSV file output. ``` Get a list of a user's shortcuts gam redirect csv ./TSShortcuts.csv user user@domain.com print filelist fields id,name,parents,shortcutdetails showmimetype gshortcut Headers Owner,id,name,parents,parents.0.id,parents.0.isRoot,shortcutDetails.targetId,shortcutDetails.targetMimeType For each shortcut, get the target file information; add the shortcut id, name and parent to the output gam redirect csv ./TSShortcutFiles.csv multiprocess csv ./TSShortcuts.csv gam user user@domain.com print filelist select "~shortcutDetails.targetId" norecursion showownedby any fields id,name,mimetype,parents,owners.emailaddress addcsvdata shortcut.id "~id" addcsvdata shortcut.name "~name" addcsvdata shortcut.parents "~parents.0.id" Headers Owner,id,name,mimeType,owners,owners.0.emailAddress,parents,parents.0.id,parents.0.isRoot,shortcut.id,shortcut.name,shortcut.parents ``` ### 6.42.01 Updated processing of option `matchlabel ` to replace the following characters with a `-` so that the query generated will work correctly. Previously, only ` ` (space) and `/` were replaced. ``` &()"|{}/ ``` ### 6.42.00 Following Jay's lead, added commands commands to copy Google Vault and Organization Takeout data to your own GCS bucket. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Vault-Takeout#copy-vault-exports * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Vault-Takeout#copy-a-takeout-bucket Updated `gam create contact` to treat the following options as errors; previously, they were silently ignored. ``` addcontactgroup removecontactgroup ``` Updated version number to align with Standard GAM. ### 6.32.05 Fixed bug in `gam show chromepolicies` that caused a trap. Following Jay's lead, added `sharingfoldersrequiresorganizerpermission` to `` and ``. * See: https://workspaceupdates.googleblog.com/ ### 6.32.04 Fixed bug in `gam move drivefile ` where the following error was not retried when `sendemailifrequired` was specified. ``` User: user@domain.com, Drive Folder: Test, Permission: noninherited/writer/user/user@external.com, Copy Failed: You are trying to invite user@external.com. Since there is no Google account associated with this email address, you must check the "Notify people" box to invite this recipient. ``` ### 6.32.03 Following Jay's lead, updated `gam create project` to handle the following error: ``` ERROR: 403: Permission 'resourcemanager.projects.get' denied on resource ``` ### 6.32.02 Added support for `gender` subfields in `gam signature` and `gam create|update sendas` option `replace `. ``` ::= addressmeas| customgender| type ::= ... gender.| ... ``` ### 6.32.01 Extended `csv_input_row_filter`, `csv_input_row_drop_filter`, `csv_output_row_filter` and `csv_output_row_drop_filter` to allow specification of filters based on text comparisons. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/CSV-Input-Filtering * See: https://github.com/taers232c/GAMADV-XTD3/wiki/CSV-Output-Filtering ### 6.32.00 Added option `oneitemperrow` to `gam print filelist` to have each of a files permissions displayed on a separate row with all of the other file fields. This produces a CSV file that can be used in subsequent commands without further script processing. Added option `pmfilter` to `gam print filelist` that is used in conjunction with permission matching. By default, permission matching simply selects which files to display, all ACLS are displayed. With `pmfilter`, only the ACLs that match are displayed. ### 6.31.09 Updated `gam gam create label `, `gam create labellist ` and `gam update labelsettings ` to expand the choices for label colors. ``` ::= "#" ::= #000000|#076239|#0b804b|#149e60|#16a766|#1a764d|#1c4587|#285bac| #2a9c68|#3c78d8|#3dc789|#41236d|#434343|#43d692|#44b984|#4a86e8| #653e9b|#666666|#68dfa9|#6d9eeb|#822111|#83334c|#89d3b2|#8e63ce| #999999|#a0eac9|#a46a21|#a479e2|#a4c2f4|#aa8831|#ac2b16|#b65775| #b694e8|#b9e4d0|#c6f3de|#c9daf8|#cc3a21|#cccccc|#cf8933|#d0bcf1| #d5ae49|#e07798|#e4d7f5|#e66550|#eaa041|#efa093|#efefef|#f2c960| #f3f3f3|#f691b3|#f6c5be|#f7a7c0|#fad165|#fb4c2f|#fbc8d9|#fcda83| #fcdee8|#fce8b3|#fef1d1|#ffad47|#ffbc6b|#ffd6a2|#ffe6c7|#ffffff ::= #16a765|#2da2bb|#42d692|#4986e7|#98d7e4|#a2dcc1| #b3efd3|#b6cff5|#b99aff|#c2c2c2|#cca6ac|#e3d7ff| #e7e7e7|#ebdbde|#f2b2a8|#f691b2|#fb4c2f|#fbd3e0| #fbe983|#fdedc1|#ff7537|#ffad46|#ffc8af|#ffdeb5 ::= #04502e|#094228|#0b4f30|#0d3472|#0d3b44|#3d188e| #464646|#594c05|#662e37|#684e07|#711a36|#7a2e0b| #7a4706|#8a1c0a|#994a64|#ffffff backgroundcolor "||custom:" textcolor "||custom:" ``` ### 6.31.08 Updated `csv_output_header_force` variable in `gam.cfg` that is a list of `` to be the exact list of headers to be included in the CSV file written by a gam print command. This might be used when the CSV file data is to be uploaded into a database and some headers may not be present in the output but must be included for the upload to work. ### 6.31.07 Added `csv_output_header_force` variable to `gam.cfg` that is a list of `` that are forced for inclusion in the CSV file written by a gam print command. This might be used when the CSV file data is to be uploaded into a database and some headers may not be present in the output but must be included for the upload to work. ### 6.31.06 Added support for new ChromeOS device fields: ``` ::= deprovisionreason| firstenrollmenttime| lastdeprovisiontimestamp| ``` ### 6.31.05 Google can return an error `Internal error` on API calls; by default, GAM retries these API calls an additional 9 times for a total of 10 tries. In some cases, determined by experience, the additional retries are unlikely to succeed and GAM performs 1 additional retry rather than 9 for a total of 2 tries. Added `bail_on_internal_error_tries` variable to `gam.cfg` that is used by GAM to control the total number of tries for these API calls; Google seems to be sending this error when it is very busy. The default value is 2 and values from 1 to 10 are allowed. This is a rare event, this is an experiment to see if retrying these errors more times leads to success. ### 6.31.04 Added commands to display Chrome Devices Needing Attention counts. ``` gam print chromeneedsattn [todrive *] [(ou )|(ou_and_children )| (ous )|(ous_and_children )] [formatjson [quotechar ]] gam show chromeneedsattn [(ou )|(ou_and_children )| (ous )|(ous_and_children )] [formatjson] ``` ### 6.31.03 Added commands to display Chrome Auto Update Expiration counts. ``` gam print chromeaues [todrive *] [(ou )|(ou_and_children )| (ous )|(ous_and_children )] [minauedate ] [maxauedate ] [formatjson [quotechar ]] gam show chromeaues [(ou )|(ou_and_children )| (ous )|(ous_and_children )] [minauedate ] [maxauedate ] [formatjson] ``` ### 6.31.02 Updated `gam vacation` to process `(replace )*` in the subject. ### 6.31.01 Added option `nofile` to `gam get photo|profilephoto` that causes GAM to suppress writing the photo data to a file. This would typicically be used when you are capturing the photo data written to stdout. ### 6.31.00 Added `retry_api_service_not_available` variable to `gam.cfg` that is used to have GAM retry `Service not applicable` errors on API calls; Google seems to be sending this error when it is very busy. This is a rare event, this is an experiment to see if GAM can identify these errors and retry them. ### 6.30.18 Fixed bug in `gam move drivefile` where the modified time of files was inappropriately being changed. ### 6.30.17 Updated code for `gam get profilephoto size ` to account for API documentation error. ### 6.30.16 Added option `nodefault` to `gam get profilephoto` that causes GAM to display an error message and set the return code to 50 if the user has a default profile photo. ### 6.30.15 Added option `gphoto |` to `gam update photo` that specifies an owner and file to be used as the source of the photo. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Photo ### 6.30.14 Fixed bug in `gam print|show peopleprofile fields ...` where metadata was being displayed even when `showmetadata` was not specified. ### 6.30.13 Fixed bug in `gam show fileinfo fields shortcutdetails.targetid` that caused a trap. Added option `size ` to `gam get profilephoto` that specifies the size in pixels of the file to download. ### 6.30.12 Updated `gam update group update [] [[delivery] ] ` to handle the following error when `` is an external member. ``` ERROR: 404: resourceNotFound - Does not exist ``` This is a Google bug where some external members can't be updated by email address. ### 6.30.11 Added option `emailmatchpattern [not] ` to `gam delete group|groups` that allows deleting a user from all groups of which they are a member based on (not) matching the group email address. ### 6.30.10 Added the ability to specify fields when displaying calendars. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Calendars * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Calendars ### 6.30.09 Added the following shortcuts to ``: ``` * my_top_files - "'me' in owners and mimeType != application/vnd.google-apps.folder and 'root' in parents" * my_top_folders - "'me' in owners and mimeType = application/vnd.google-apps.folder and 'root' in parents" * my_top_items - "'me' in owners and 'root' in parents" ``` ### 6.30.08 Following Jay's lead, added the following License SKUs: ``` 1010390001 - Assured Controls 1010400001 - Beyond Corp Enterprise ``` ### 6.30.07 Added option `sheetsfields ` to `gam print|show sheet ` that lets you specfiy the desired subfields from the `sheets` field of a spreadsheet that should be displayed. By default, all `sheets` subfields are displayed. ``` ::= bandedranges| basicfilter| charts| columngroups| conditionalformats| data| developermetadata| filterviews| merges| properties| protectedranges| rowgroups| slicers ::= "(,)*" ``` ### 6.30.06 Fixed bug in `gam create|update|delete drivefileacl ... updatesheetprotectedranges` that caused a trap. ### 6.30.05 Cleaned up code for option `updatesheetprotectedranges` in `gam create|update|delete drivefileacl `. ### 6.30.04 Improved output formatting for field `sheets` in `gam info sheet `. ### 6.30.03 Updated `gam create|update drivefileacl ` commands to handle the following error. ``` ERROR: 403: fileOrganizerOnFoldersInSharedDriveOnly - FileOrganizer role is only allowed on folders. ``` Added option `updatesheetprotectedranges` to `gam create|update|delete drivefileacl ` commands that causes GAM to update Sheet Protected Ranges if `` is a Google Sheet. ### 6.30.02 Fixed error message in `gam print cigroups` when an invalid field was specified. ### 6.30.01 Fixed bug in `gam create cigroup name +` where the group name was set to `` rather than ``. ### 6.30.00 Added option `returnidonly` to `gam show fileinfo ` that causes GAM to return just the file ID of the files in `` file as output. ``` $ gam user user@domain.com show fileinfo root returnidonly 0AHYenC8f12ALUk9xyz $ gam user testsimple show fileinfo name "Test File" returnidonly 0B3YenC8f12ALflhUTmtNS3E2Vk9LSUpBVXRSUG5lQ29GWkRtWHM1VzU1blc4ZW1pb2FnNTA ``` Changed the display format of file paths for files on Shared Drives. * Old format - SharedDrive(TS Shared Drive 6)/TS SD6 Folder/TS TD6 Doc * New format -SharedDrives/TS Shared Drive 6/TS SD6 Folder/TS TD6 Doc Added option `returnpathonly` to `gam show filepath ` that causes GAM to return just the file path of the files in `` file as output. ``` $ gam user user@domain.com show filepath name "Test File" returnpathonly My Drive/Classroom/Test File $ gam user user@domain.com show filepath 0AJ6mqwXP9wHxUk9xyz returnpathonly TS Shared Drive 6 $ gam user testsimple show filepath 0AJ6mqwXP9wHxUk9xyz returnpathonly fullpath SharedDrive(TS Shared Drive 6) $ gam user user@domain.com show filepath teamdriveid 0AJ6mqwXP9wHxUk9xyz teamdrivefilename "TS TD6 Doc" returnpathonly SharedDrive(TS Shared Drive 6)/TS SD6 Folder/TS TD6 Doc ``` Added command `gam comment *` that displays the comment data on stdout. This can be used to validate `csv_input_row_filters` and column value extraction. ``` $ more Comment.csv col1,col2 aaa,111 bbb,222 ccc,333 $ gam config csv_input_row_drop_filter "col1:regex:bbb" csv Comment.csv gam comment "Col1:~~col1~~" "Col2:~~col2~~" 2022-12-16T12:41:50.045-08:00,0/2,Using 2 processes... Col1:aaa Col2:111 Col1:ccc Col2:333 ``` Updated `gam create|delete license ` to take a list of SKUs. Updated `gam create user ... license ` to take a list of SKUs. Updated `gam sync license ` to take a list of SKUs and added option `allskus|onesku` that is required when multiple SKUs are specified. * `allskus` indicates that users in `` will be updated to have all of the SKUs in ``. * This is typically used when assigning different types of licenses, such as an Enterprise license and a Voice license. * `onesku` indicates that users in `` with none of the licenses in`` will be updated to have the first available license SKU in ``. * This is typically used with Google Education Plus or Google Education Standard licenses, which are split across multiple SKUs. Added option `basic` to `gam print cigroups` that causes GAM to display the basic Cloud Identity Group fields, i.e., those fields that do not require an additional API call per group. Following Jay's lead, added option `query ` to `gam print cigroups`. ### 6.29.21 Fixed bugs in `gam selectfilter` that caused traps or inappropriate error messages. ### 6.29.20 Fixed bug in `gam archive messages ` that caused a trap. ### 6.29.19 Fixed bug introduced in 6.29.17 in `todrive` that caused a trap. ### 6.29.18 Added the following variables to `gam.cfg` to provide more flexibility when multiple row filters are specified. * `csv_input_row_filter_mode allmatch|anymatch` * `allmatch` - all filters must match to include in input; this is the default and is the current behavior * `anymatch` - any filter must match to include in input * `csv_input_row_drop_filter_mode allmatch|anymatch` * `allmatch` - all filters must match to drop from input * `anymatch` - any filter must match to drop from input; this is the default and is the current behavior * `csv_output_row_filter_mode allmatch|anymatch` * `allmatch` - all filters must match to include in output; this is the default and is the current behavior * `anymatch` - any filter must match to include in output * `csv_output_row_drop_filter_mode allmatch|anymatch` * `allmatch` - all filters must match to drop from output * `anymatch` - any filter must match to drop from output; this is the default and is the current behavior ### 6.29.17 Added option `todrive tdcellnumberformat text|number` that causes GAM to set the Sheet Number format when uploading files with `todrive`. ### 6.29.16 Fixed bug introduced in 6.29.15 that caused an error like this: ``` ERROR: Config File: gam.cfg, Section: DEFAULT, Item: todrive_locale, Value: "en_us", Expected: ,ar-eg,az-az,be-by,bg-bg,bn-in,ca-es,... ``` ### 6.29.15 Updated `gam [] info|print|show drivelabels languagecode ` to use the BCP-47 language code. ### 6.29.14 Added option `stripcrsfromtitle` to `gam print|show datastudioassets` that causes carriage returns, linefeeds and nulls to be stripped from asset titles. ### 6.29.13 Updated status messages in `gam delete|update chromepolicy` to be more informative. Fixed bug in `gam delete chromepolicy` with schema chrome.users.apps.InstallType. ### 6.29.12 Fixed issue in `gam update chromepolicy` with schemas `chrome.users.apps.ManagedConfiguration`, `chrome.devices.managedguest.apps.ManagedConfiguration` and `chrome.devices.kiosk.apps.ManagedConfiguration`. ### 6.29.11 Improved performance of `gam update chromepolicy`. ### 6.29.10 Attempted to fix issues in `gam update chromepolicy` with schemas `chrome.users.apps.InstallType` and `chrome.users.apps.IncludeInChromeWebStoreCollection`. ### 6.29.09 Fixed bug in `gam create tasklist` that caused a trap. Added `countsonly` option to `gam print|show tasks|tasklists` that causes GAM to display the number of tasks|tasklists for a user rather than listing the details. Added option `due