# 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.67.37 Fixed bug in `gam show messages ... showattachments` to avoid a trap when `text/plain` attachments in character sets other than `UTF-8` are displayed. ### 6.67.36 Updated `gam batch ` and `gam tbatch ` commands to accept lines with the following form: ``` sleep ``` Batch processing will suspend for `` seconds before the next command line is processed. ### 6.67.35 Added the following options to `` that allow more powerful matching. ``` nottype typelist nottypelist rolelist notrolelist ``` * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Permission-Matches#define-a-match ### 6.67.34 Added option `movetoorgunitdelay ` to `gam create shareddrive ... ou|org|orgunit `. GAM creates the Shared Drive, verifies that it has been created and then tries to move it to ``. Google seems to require a delay or the following error is generated. ``` ERROR: 409: 409 - The operation was aborted. ``` `movetoorgunitdelay` defaults to 20 seconds which seems to work; `` can range from 0 to 60. ### 6.67.33 Upgraded to OpenSSL 3.2.1 where possible. Fixed bug in `gam print shareddrives` where `role` was improperly displayed as `fileOrganizer` rather than `writer`. Added option `guiroles []` to `gam info|print|show shareddrive` that maps the Drive API role names to the Google Drive GUI role names. ``` API: GUI commenter: Commenter fileOrganizer: Content manager organizer: Manager reader: Viewer writer: Contributor ``` ### 6.67.32 Updated `` to allow multiple `tdshare commenter|reader|writer` options. Fixed bug in `gam print shareddrives` where `role` was improperly displayed as `unknown` rather than `reader` when `Allow viewers and commenters to download, print, and copy files` was unchecked for the Shared Drive. ### 6.67.31 Updated `gam claim|transfer ownership ` to properly handle the case where `` referencess a Drive shortcut. ### 6.67.30 Fixed bug where the `fullpath` option in various commands was not converting the generic shared drive name `Drive` to the drive's actual name. ### 6.67.29 Added optional argument `owneraccess` to `gam courses remove teachers|students [owneracccess] remove teacher|student [owneraccess] ` in order to test a possible API change. Updated code to avoid a trap when `gam config auto_batch_min 1 csv file.csv gam ...` was entered. The `config auto_batch_min 1` is not appropriate in this context and will be ignored. ### 6.67.28 Improved handling of `Bad Request` error in `gam collect orphans`. ### 6.67.27 Updated `gam collect orphans` to handle the following error: ``` ERROR: 400: badRequest - Bad Request ``` ### 6.67.26 Fixed bug in `gam print vaultexports ... formatjson` that caused a trap. ### 6.67.25 Added option `owneraccess` to `gam info courses ` and `gam info course ` in order to test a possible API change. ### 6.67.24 Fixed bug that caused HTML password notification email messages to be displayed in raw form. ### 6.67.23 Use local copy of `googleapiclient` to remove static discovery documents to improve performance. ### 6.67.22 Added `permissionidlist ` to `` that allows matching any permission ID in a list. Added option `exportlinkeddrivefiles ` to `gam create vaultexport` that is used with `corpus mail`. ### 6.67.21 Updated `gam remove aliases user|group ` to give a more informative error message when the target/alias combination does not exist. ``` Old: User: testsimple@rdschool.org, User Alias: tsalias@rdschool.org, Remove Failed: Invalid Input: resource_id New: User: testsimple@rdschool.org, User Alias: tsalias@rdschool.org, Remove Failed: Does not exist ``` ### 6.67.20 Added option `onelicenseperrow|onelicenceperrow` to `gam print users ... licenses` that causes GAM to print a seperate user information row for each license a user is assigned. This makes processing the licenses in a script possible and allows better sorting in a CSV File. By default, all licenses for a user are displayed in a list on one row: ``` primaryEmail,LicensesCount,Licenses,LicensesDisplay user@domain.com,2,1010020020 1010330004,Google Workspace Enterprise Plus Google Voice Standard ``` With `onelicenseperrow|onelicenceperrow`, each license is on a separate row: ``` primaryEmail,License,LicenseDisplay user@domain.com,1010020020,Google Workspace Enterprise Plus user@domain.com 1010330004,Google Voice Standard ``` ### 6.67.19 Updated `gam create|update user ... notify` to encode the characters `<>&` in the password so that they display correctly when the notify message content is HTML. ### 6.67.18 Cleaned up `Getting/Got` messages for `gam print courses|course-participants`. ### 6.67.17 Added option `showitemcountonly` to various commands that causes GAM to display the item count on stdout; no CSV file is written. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Cloud-Identity-Groups#display-group-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Classroom-Courses#display-course-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Classroom-Membership#display-course-membership-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/ChromeOS-Devices#display-cros-device-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Cloud-Identity-Devices#display-device-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Cloud-Identity-Devices#display-device-user-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Groups#display-group-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Mobile-Devices#display-mobile-device-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Organizational-Units#display-organizational-unit-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Resources#display-resource-counts * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users#display-user-counts ### 6.67.16 By default, `gam print group-members membernames` displays `Unknown` for members whose names can not be determined. Added option `unknownname ` that let's you specify an alternative value. Further improved performance of `gam print group-members membernames cachememberinfo`. ### 6.67.15 Update `gam print group-members membernames` to handle the following error: ``` ERROR: 400: failedPrecondition - Precondition check failed. ``` Added option `cachememberinfo [Boolean]` to `gam print group-members` that causes GAM to cache member info so that only one API call is made to get information for each user/group. This consumes more memory but dramatically reduces the number of API calls. ### 6.67.14 Updated reseller commands to handle the following error: ``` ERROR: 400: invalid - Customer domain [domain.com] is linked to one or more email verified customers, please provide a customer id. ``` ### 6.67.13 Updated `gam create domain ` to handle the following error: ``` ERROR: 409: conflict - Domain in request is in use by an email verified customer. ``` ### 6.67.12 Added option `addcsvdata ` to `gam print datatransfers` that adds additional columns of data to the CSV file output. ### 6.67.11 Updated various Gmail related commands to handle this error: ``` ERROR: 403: permissionDenied - Insufficient Permission ``` when the following service account scopes are selected: ``` [ ] 23) Gmail API - Basic Settings (Filters,IMAP, Language, POP, Vacation) - read/write, Sharing Settings (Delegates, Forwarding, SendAs) - read [ ] 24) Gmail API - Full Access (Labels, Messages) [ ] 25) Gmail API - Full Access (Labels, Messages) except delete message [*] 26) Gmail API - Full Access - read only [ ] 27) Gmail API - Send Messages - including todrive [ ] 28) Gmail API - Sharing Settings (Delegates, Forwarding, SendAs) - write ``` ### 6.67.10 Fixed bug that caused a trap when optional argument `charset ` was used with `emlfile ` in `gam draft|import|insert message`. ### 6.67.09 Added option `maxevents ` to `gam report ` that limits the number of events displayed for each activity; the default is 0, no limit. Setting options `maxactivities 1 maxevents 1 maxresults 1` can be used to as efficiently as possible show the most recent activity/event; this can be useful when reporting drive activity for individual drive files. ### 6.67.08 Added optional argument `charset ` to `emlfile ` in `gam draft|import|insert message`; the default value is `ascii`. ### 6.67.07 Updated `gam delete message` to handle this error: ``` ERROR: 403: permissionDenied - Insufficient Permission ``` when the following service account scopes are selected: ``` [ ] 24) Gmail API - Full Access (Labels, Messages) [*] 25) Gmail API - Full Access (Labels, Messages) except delete message ``` ### 6.67.06 Updated commands that create ACLs to handle the following error: ``` ERROR: 400: abusiveContentRestriction - Bad Request. User message: "You cannot share this item because it has been flagged as inappropriate." ``` ### 6.67.05 Updated the following commands: ``` gam create|delete|update delegate gam forward gam create|delete forwardingaddresses gam create|delete sendas ``` to handle this error: ``` ERROR: 403: permissionDenied - Insufficient Permission ``` when the following serice account scope is not enabled: ``` [ ] 28) Gmail API - Sharing Settings (Delegates, Forwarding, SendAs) - write ``` ### 6.67.04 Updated user attribute `replace ` to allow `field:photourl` which allows embedding a link to a user's photo in their signature. Formatting the signature HTML to properly display the photo is left to the GAM admin. ### 6.67.03 Fixed bug introduced in 6.67.02 in `gam claim ownership` that caused a trap. ### 6.67.02 Added option `skipids ` to `gam transfer drive` that handles special cases where you want to prevent ownership from being transferred for selected files/folders. Added option `skipids ` to `gam copy drivefile` that handles special cases where you want to prevent selected files/folders from being copied. Updated commands that create files/folders on Shared Drives to handle the following errors: ``` storageQuotaExceeded teamDriveFileLimitExceeded teamDriveHierarchyTooDeep ``` * See: https://support.google.com/a/users/answer/7338880#shared_drives_file_folder_limits ### 6.67.01 Fixed bug in `gam print vaultcounts` that caused a trap. ### 6.67.00 Updated `gam update action ` to use the new API function `batchChangeStatus` that replaces the old API function `action`; ChromeOS devices are now processed in batches. The batch size defaults to 10, the `actionbatchsize ` option can be used to set a batch size between 10 and 250. Updated `gam create vaultexport matter ` to support `corpus calendar`. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Vault-Takeout#create-vault-exports ### 6.66.16 Added option `convertcrnl` to `gam update chromepolicy` to properly handle carriage returns (\r) and line feeds (\n) in value strings entered on the command line in the ` ` form. ``` gam update chromepolicy convertcrnl chrome.devices.DisabledDeviceReturnInstructions deviceDisabledMessage "Please return device to:\nSchool\n123 Main Street\nAnytown US" ou /Path/to/OU ``` ### 6.66.15 Added option `copysubfilesownedby any|me|others` to `gam copy drivefile` that allows specification of which source folder sub files to copy based on file ownership; the default is `any`. This only applies when files are being copied from a 'My Drive'. ### 6.66.14 Updated `gam modify messages` to recognize the following error: ``` ERROR: 400: invalid - Invalid label: SENT ``` Updated `gam update alias user|group|target ` to avoid the following problem. ``` $ gam update alias testalias@domain.com user testuser User Alias: testalias@domain.com, Deleted User Alias: testalias@domain.com, User: testuser@domain.com, Update Failed: Duplicate, Email Address: testalias@domain.com ``` GAM updates an alias to point to a new target by deleting the alias and then recreating the alias pointing to the new target. Unfortunately, if these commands are executed back-to-back; Google generates the `Update Failed: Duplicate` error. Now, GAM waits 2 seconds between the delete and the insert which seems to eliminate the problem. If the problem persists, the option `waitafterdelete ` can be used to increase the wait time to a maximum of 10 seconds. ### 6.66.13 Updated functionality of option `preservefiletimes` in `gam update drivefile `. * Current * `preservefiletimes localfile ` - `modifiedTime` of `` is set to that of `localfile ` * `preservefiletimes` - No effect * Updated * `preservefiletimes localfile ` - `modifiedTime` of `` is set to that of `localfile ` * `preservefiletimes` - `modifiedTime` of `` retains its current value ### 6.66.12 Upgraded to Python 3.12.1 where possible. Updated all drive commands to handle the following error: ``` ERROR: 401: Active session is invalid. Error code: 4 - authError ``` This is due to the Drive SDK API being disabled in the user's OU. * See: https://support.google.com/a/answer/6105699 ### 6.66.11 Fixed/improved handling of shortcuts in `gam transfer drive`. ### 6.66.10 Updated `gam create datatransfer` to handle the following error: ``` ERROR: 401: Active session is invalid. Error code: 4 - authError ``` ### 6.66.09 Fixed bug in `gam print filelist ... allfields` that caused a trap when `gam.cfg` contained `drive_v3_native_names = False`. ### 6.66.08 Added additional columns `isBase` and `baseId` to `gam print fileparenttree` to simplify processing the output in a script. ### 6.66.07 Fixed bug in `gam print diskusage` that caused a trap. ### 6.66.06 Added a command the print the parent tree of file/folder. ``` gam print fileparenttree [todrive *] [stripcrsfromname] ``` * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Drive-Files-Display#display-file-parent-tree ### 6.66.05 Added column `space.name` to `gam print chatmembers`. ### 6.66.04 Updated Chat info|show|print commands to display all time fields in local time if specified in `gam.cfg`. ### 6.66.03 Fixed bug in `gam print filelist select ` where `stripcrsfromname` was not being applied to files below the selected folder. ### 6.66.02 Updated device commmands to handle the following error caused by an invalid query. ``` ERROR: 400: invalidArgument - Request contains an invalid argument. ``` Added fields `deviceid` and `hostname` to ``. ### 6.66.01 Added the following variables to gam.cfg that allow control over whether `\` is used as an escape character when reading/writing CSV files. ``` csv_input_no_escape_char - default value True csv_output_no_escape_char - default value False todrive_no_escape_char - default value True ``` When the value is True, `\` is ignored as an escape character; when the value is False, `\\` on input is converted to `\`, `\` on output is converted to `\\`. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/CSV-Special-Characters ### 6.66.00 Added support for `Focus Time` and `Out of Office` status events in user's primary calendars. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Calendars-Events#status-events This is a work-in-progress. Updated `gam print|show messages` to allow option `show_size` to be used with option `countsonly` to display the cumulative size of the messages selected. ``` gam user user@domain.com print messages query "newer_than:31d" countsonly showsize Getting all Messages for user@domain.com Got 16 Messagess for user@domain.com... User,messages,size user@domain.com,16,92806 ``` ### 6.65.17 Added the option `mappermissionsdomain ` to `gam create drivefileacl ` that maps `` to `` in the `user )|(group )|(domain )` options; `` and `` must specify email addresses for the mapping to succeed. The option can be specified multiple times to provide different mappings. This option will be most useful when reading a CSV file containing ACLs referencing `` and you want a new ACL with the same options but in ``. ### 6.65.16 Fixed bug in `gam print filecounts` where `Item Cap` showed an incorrect value. Added option `addorigfieldstosubject` to `gam forward messages|threads` that causes GAM to append the original `from`, `to` and `date` fields to the message subject. ``` Fwd: Ross to TestUser (Original From: Ross Scroggs To: testuser@domain.com Date: Thu, 23 Nov 2023 07:01:59 -0800) ``` ### 6.65.15 Added additional options to `gam print|show youtubechannels`. ### 6.65.14 Fixed bug in gam copy|move drivefile` that caused a trap. ``` UnboundLocalError: cannot access local variable 'emailAddress' where it is not associated with a value ``` ### 6.65.13 Added support for user language `en-CA`. Added option `sizefield quotabytesused|size` to the following commands that specifies which file size field to use when totaling file sizes; the default value is `quotabytesused`; previous versions used `size`. ``` gam print|show filecounts gam print filelist gam print|show filetree gam print diskusage ``` See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Drive-Files-Display#file-size-fields ### 6.65.12 Additional updates on MacOS when a `gam csv` command is interrupted with a contol-C. ### 6.65.11 Updated multiprocessing to handle the following error that occurs on MacOS when a `gam csv` command is interrupted with a contol-C. ``` multiprocessing/resource_tracker.py:224: UserWarning: resource_tracker: There appear to be N leaked semaphore objects to clean up at shutdown ``` Fixed bug in `gam print|show crostelemetry` where no CrOS device data was displayed if no selection options were chosen; now, data is displayed for all CrOS devices as documented. ### 6.65.10 Fixed bug in `gam print crostelemetry` that caused a trap: `KeyError: 'reportTime'`. ### 6.65.09 Added option `noduplicate` to `gam create drivefile` that causes GAM to issue a warning and not perform the create if a non-trashed item with the same name (regardless of MIME type) exists in the parent folder. Updated `gam get drivefile ` to handle the following error that seems to occur when multiple tabs from a Google sheet are being downloaded in parallel. ``` Download Failed: HTTP Error: 429 ``` ### 6.65.08 Added option `addcsvdata ` to `gam report ` that adds additional columns of data to the CSV file output. Added option `shownoactivities` to `gam report ` that causes GAM to display a row with a key value of `NoActivities` when there are no activities to report. For example, to find Shared Drives with no activity, see: https://github.com/taers232c/GAMADV-XTD3/wiki/Reports#find-shared-drives-with-no-activity ### 6.65.07 Updated `gam delete building` to handle the following error: ``` ERROR: 412: conditionNotMet - Cannot delete building because there are Calendar resources associated with it. ``` ### 6.65.06 Improved error message when trying to add external students/teachers to a course. ``` gam courses 544906261666 add student user@gmail.com Course: 544906261666, Add 1 Student Course: 544906261666, Student: user@gmail.com, Add Failed: 403: permissionDenied - @CannotDirectAddUser Unable to directly add the user to the course. Please check that the user account exists and is within the course admin's domain. Add external user with: gam user user@gmail.com create classroominvitation courses 544906261666 role Student ``` ### 6.65.05 Updated `gam info users ` to make option `grouptree` effective when used with option `formatjson`. Added option `[formatjson [quotechar ]]]` to these commands so that event details are displayed in CSV format. ``` gam print|show grouptree gam print|show grouptree ``` Added option `querytime ` to all commands that process messages. For example, you can identify all messages within a particular time period, in this case, all messages unread in the last 30 days. ``` gam user user@domain.com print messages querytime30d -30d query "after:#querytime30d# is:unread" ``` Updated `gam import|insert message` to allow `replace ` as documented. Updated non-owner permission handling in `gam copy|move drivefile`. ### 6.65.04 Fixed bug where license SKU `1010020031` (Google Workspace Frontline Standard) was improperly entered making it unusable; its alias `wsflwstan` was usable. Added support for Google Workspace Additional Storage. * ProductID - 101043 * SKUID - 1010430001 | gwas | plusstorage ### 6.65.03 Fixed bug in commands that display calendar events where event start and end times were not properly displayed when `gam.cfg` had `timezone utc`. The API returns the start and end times expressed in the calendar timezone but GAM replaced the timezone specifier with a `Z`; the date and time values were as expected. This became a problem when event data was exported and used to create or update events. ### 6.65.02 Updated `gam print|show browsers` to handle the following error: ``` ERROR: 503: serviceNotAvailable - The service is currently unavailable. ``` ### 6.65.01 Added option `showmimetypesize` to `gam print|show filecounts` and `gam print filelist countsonly` that displays the total file size for each MIME type. ### 6.65.00 Fixed bug in `gam create contact ` that caused a trap when contacts were being copied from one user to another. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-People-Contacts-Profiles#copy-user-contacts-to-another-user Updated the following commands to allow specification of a task list by its title. ``` ::= tltitle: ::= "''(,'')*" ::= | | | gam create task gam show tasks [tasklists ] gam print tasks [tasklists ] gam update tasklist gam delete tasklist gam clear tasklist gam info tasklist ``` Note the quoting in ``; the entire list should be enclosed in `"` and each `tltitle:` must be enclosed in `'` if `` contains a space. ### 6.64.16 Fixed bug in `gam create task ` that caused a trap when an invalid TaskListID was specified. ### 6.64.15 Updated `lookerstudioassets|lookerstudiopermissions` commands to handle the following error: ``` ERROR: 500: internalError - Internal error encountered. ``` ### 6.64.14 Cleaned up and renamed `gam info appdetails` to `gam info chromeapp`. ### 6.64.13 Added command to get customer app details. ``` gam info appdetails android|chrome|web [formatjson] ``` * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Chrome-Installed-Apps ### 6.64.12 Upgraded to Python 3.12.0 where possible. Upgraded to OpenSSL 3.1.3 where possible. ### 6.64.11 Added support for Google Workspace Labs license. * ProductID - 101047 * SKUID - 1010470002 | gwlabs | workspacelabs ### 6.64.10 Fixed bug introduced in 6.64.09 that caused a trap when `gam redirect csv multiprocess` was used. ### 6.64.09 Eliminated extraneous `permisssions.0.xxxx` headers in `gam print filelist ... oneitemperrow` that appeared when some user in `` had no files to display. ### 6.64.08 Fixed bug in `redirect csv - todrive tdtitle "File Title" tdsheettitle "Sheet Title"` where "Sheet Title" was not assigned to the new sheet. ### 6.64.07 Updated `gam move drivefile` to handle the following error: ``` ERROR: 403: targetUserRoleLimitedByLicenseRestriction - Cannot set the requested role for that user as they lack the necessary license ``` ### 6.64.06 Added fields `devicelicensetype` and `osupdatestatus` to ``. ### 6.64.05 Added `matchfield organizerself ` to `` to simplify selecting events where the user in the following commands is/is not the organizer of the event. ``` gam update events [] gam delete events [] gam purge events [] gam move events [] gam info events [] gam show events [] gam print events [] gam update calattendees ``` ### 6.64.04 Updated `gam calendars move events` and `gam move events ` to handle the following error: ``` ERROR: 400: badRequest - Bad Request ``` ### 6.64.03 Updated `gam get drivefile` to allow downloading Jamboard files; they must be downloaded with `format pdf`. ### 6.64.02 Updated `gam transfer drive` to handle the following error: ``` ERROR: 400: Bad Request. User message: "The action cannot be performed on an item of mime-type: application/vnd.google-apps.shortcut" - invalidSharingRequest ``` ### 6.64.01 Updated `gam print|show youtubechannels` to handle the following error: ``` ERROR: 403: unsupportedSupervisedAccount - Access Forbidden. The authenticated user cannot access this service. ``` ### 6.64.00 Added support for displaying users YouTube channels. * See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-YouTube ### 6.63.19 Fixed bug in `gam print vacation` where `endDate` value was not converted to `yyyy-mm-dd` format. ### 6.63.18 Updated `gam print|show ownership` to show the correct file owner when the most recent event is `change_owner`. ### 6.63.17 Added support for Duet AI license. * ProductID - 101047 * SKUID - 1010470001 | duetai Added `api_call_tries_limit` variable to `gam.cfg` that limits the number of tries for Google API calls that return an error that indicates a retry should be performed. The default value is 10 and the range of allowable values is 3-10. ### 6.63.16 Arguments `noinherit`, `blockinheritance` and `blockinheritance true` have been removed from the following commands due to an upcoming API change that no longer allows blocking OU setting inheritance. Arguments `inherit` and `blockinheritance false` are still valid. ``` gam create org gam update org gam update orgs ``` ### 6.63.15 Added `print_cros_ous` and `print_cros_ous_and_children` variables to `gam.cfg` that provide a default list of OUs for these commands: ``` gam print cros gam print crosactivity ``` Updated `group` commands that manage members to handle the following error: ``` ERROR: 503: serviceNotAvailable - The service is currently unavailable. ``` Updated Data Studio to Looker Studio; added the following command synonyms: * `lookerstudioassets` for `datastudioassets` * 'lookerstudiopermissions` for `datastudiopermissions` Corrected error message in `gam add datastudiopermissions`: * Old -`ERROR: Missing argument: Expected ` * New - `ERROR: Missing argument: Expected ### 6.63.14 Added option `verifyorganizer []` to `gam copy|move drivefile`. When a copy/move operation involves a Shared Drive, GAM verifies that the user is an organizer. Unfortunatley, this fails when the user is not a direct organizer but is a member of a group that is an organizer. Specifying `verifyorganizer false` suppresses the verification. Updated the following commands to be able to specify a list of domains rather than a single domain: ``` gam print aliases gam print groups gam print|show group-members gam print users ``` Added `print_agu_domains` variable to `gam.cfg` that provides a default list of domains for these commands. When multiple domains are specified and a query/queries are specified, an API call is made for each domain/query combination. ``` $ gam print users domains school.org,students.school.org queries "'email:admin*','email:test*'" Getting all Users that match query (domain=school.org, query="email:admin*"), may take some time on a large Google Workspace Account... Got 3 Users: admin@school.org - admindirector@school.org Getting all Users that match query (domain=school.org, query="email:test*"), may take some time on a large Google Workspace Account... Got 20 Users: testusera@school.org - testuserx@school.org Getting all Users that match query (domain=students.school.org, query="email:admin*"), may take some time on a large Google Workspace Account... Got 1 User: admin@students.school.org - admin@students.school.org Getting all Users that match query (domain=students.school.org, query="email:test*"), may take some time on a large Google Workspace Account... Got 1 User: testuser1@students.school.org - testuser1@students.school.org primaryEmail ... ``` ### 6.63.13 Updated `gam print filelist ... showdrivename` and `gam show fileinfo ... showdrivename` to show the actual name of Shared Drives in other domains rather than `Drive`. ### 6.63.12 Updated commands that call the Reports API (including `gam info domain`) to handle a change in the Reports API that generated the following warning: ``` WARNING: End date greater than LastReportedDate. ``` Added option `showdeleted []' to `gam print|show chatmessages`. ### 6.63.11 Added option `ou_and_children ` to `gam print|show crostelemetry` to simplify getting telemetry data for all ChromeOS devices in an OU and its children. ### 6.63.10 Added option `addcsvdata ` to these commands. This adds additional columns of data to the CSV file output when the `csv` option is used. If a CSV file of calendar information is being used to specify the calenders, fields, e.g., summary can be added to the ACL output file. ``` gam print calendaracls gam resource print calendaracls gam resources print calendaracls gam calendar printacl gam calendars print acls ``` Added commands to show the number of CrOS devices or Users in an entity. ``` gam show count gam show count ``` Updated `gam create project` to prompt user to mark `GAM Project Creation` as a trusted app. ### 6.63.09 Updated `gam create teamdrive` to handle the following error: ``` ERROR: 403: userCannotCreateTeamDrives - The authenticated user cannot create new shared drives. ``` ### 6.63.08 Updated `cigroup` commands to handle the following error: ``` ERROR: 400: invalidArgument - Request contains an invalid argument. ``` ### 6.63.07 Fixed bug in `gam append sheetrange` that caused a trap when appending to an empty sheet. Upgraded to Python 3.11.5 where possible. ### 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