@@ -224,6 +224,8 @@ COUNT_N_EXCEEDS_MAX_TO_PROCESS_M = 'Count {0} exceeds maximum to {1} {2}'
CORRUPT_FILE='Corrupt file'
COULD_NOT_FIND_ANY_YUBIKEY='Could not find any YubiKey\n'
COULD_NOT_FIND_YUBIKEY_WITH_SERIAL='Could not find YubiKey with serial number {0}\n'
CREATE_DELEGATE_NOTIFY_MESSAGE='#user# has granted you #delegate# access to read, delete and send mail on their behalf.'
CREATE_DELEGATE_NOTIFY_SUBJECT='#user# mail delegation to #delegate#'
CREATE_USER_NOTIFY_MESSAGE='Hello #givenname# #familyname#,\n\nYou have a new account at #domain#\nAccount details:\nUsername: #user#\nPassword: #password#\nStart using your new account by signing in at\nhttps://www.google.com/accounts/AccountChooser?Email=#user#&continue=https://workspace.google.com/dashboard\n'
CREATE_USER_NOTIFY_SUBJECT='Welcome to #domain#'
CSV_DATA_ALREADY_SAVED='CSV data already saved'
@@ -516,7 +518,7 @@ To set up Google Chat for your current project, please go to:
@@ -43,7 +43,7 @@ Even if you're not going to use GAM as a Chat Bot, you have to configure a Chat
* Uncheck "Build this Chat app as a Workspace add-on."
* Enter an App name and Description of your choosing.
* For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
* In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
* Inƒ Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations" if present
* In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the Topic Name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
* In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
* [Chrome Management API - Count Active Devices](https://developers.google.com/chrome/management/reference/rest/v1/customers.reports/countActiveDevices)
* [Chrome Management API - Count Devices per Boot Type](https://developers.google.com/chrome/management/reference/rest/v1/customers.reports/countDevicesPerBootType)
* [Chrome Management API - Count Devices per Release Channel](https://developers.google.com/chrome/management/reference/rest/v1/customers.reports/countDevicesPerReleaseChannel)
## Notes
To use these features you must add the `Chrome Management API` to your project and authorize
the appropriate scope: `Chrome Management API - read only`.
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
*`formatjson` - Display the fields in JSON format.
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
As of GAM version `6.67.00`, the new API function `batchChangeStatus` replaces the old API function `action`; ChromeOS devices are now processed in batches.
ChromeOS devices are now processed in batches.
The batch size defaults to 10, the `actionbatchsize <Integer>` option can be used to set a batch size between 10 and 250.
As deprovisioning ChromeOS devices is not reversible, you must enter `acknowledge_device_touch_requirement`
@@ -711,7 +711,9 @@ To retrieve the count with `showitemcountonly`:
*`user all` - All users, the default; there is one API call
@@ -378,7 +394,7 @@ Select the users for whom information is desired.
*`showorgunit` - Add a column labelled `orgUnitPath` to the output; an additional API call is made to get the email addresses of the users in `<OrgUnitPath>`
*`select <UserTypeEntity>` - A selected collection of users, e.g., `select group staff@domain.com`; there is one API call per user
By default, when `user all` is specified (or no user specification in supplied), GAM backs up looking for data with a (basically) random user. If the randaom
By default, when `user all` is specified (or no user specification in supplied), GAM backs up looking for data with a (basically) random user. If the random
doesn't have any data, the command reports that no data was found. Use `allverifyuser <UserItem>` to specify a specific user to use to search for data.
Specify the report date; the default is today's date.
@@ -392,6 +408,16 @@ Specify the report date; the default is today's date.
Option `convertmbtogb` causes GAM to convert parameters expressed in megabytes
(name ends with _in_mb) to gigabytes (name converted to _in_gb) with two decimal places.
Add additional columns of data from the command line to the output.
*`addcsvdata <FieldName> <String>`
This will be most useful when reading a CSV of user information and you want to include some of the user information,
e.g., orgUnitPath, in the output.
```
gam redirect csv ./Users.csv print users fields ou
* [Reseller API - Customers](https://developers.google.com/admin-sdk/reseller/v1/reference/customers)
* [Reseller API - Subscriptions](https://developers.google.com/admin-sdk/reseller/v1/reference/subscriptions)
## Notes
Updated handling of `seats` option in `gam create|update resoldsubscription` to properly assign
the API fields `numberOfSeats` and `maximumNumberOfSeats`.
Prior to version 6.50.00, this is how the `seats <NumberOfSeats> <MaximumNumberOfSeats>` option was processed:
* Plan name `ANNUAL_MONTHLY_PAY` or `ANNUAL_YEARLY_PAY`
*`seats <NumberOfSeats>` - `<NumberOfSeats>` was properly passed to the API
*`seats <NumberOfSeats> <MaximumNumberOfSeats>` - `<NumberOfSeats>` was properly passed to the API; `<MaximumNumberOfSeats>` was passed to the API which ignored it
* Plan name `FLEXIBLE` or `TRIAL`
*`seats <NumberOfSeats>` - `<NumberOfSeats>` was improperly passed to the API; an API error was generated
*`seats <NumberOfSeats> <MaximumNumberOfSeats>` - `<MaximumNumberOfSeats>` was properly passed to the API; `<NumberOfSeats>` 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 <Number>` which will be properly passed in the correct form to the API based on plan name.
## Manage Multiple Domains
Thanks to Duncan Isaksen-Loxton for a script to help manage multiple domains.
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this fieldf,
When listing Chat Spaces, the Chat API does not return the `accessSettings` field; if you need to see this field,
add `showaccesssettings` to the command. This requires an additional Chat API call per chat space of type `SPACE`
to get the `accessSettings` field.
@@ -432,11 +422,20 @@ When using the `formatjson` option, double quotes are used extensively in the da
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
@@ -226,8 +226,6 @@ When a file appears more that once in the copy, the first time the file is proce
If it is processed again (because of multiple parents within the source folder structure), a shortcut is created that points to the first copy.
### Shortcuts
In previous versions, copying shortcuts caused an error because shortcuts can't be copied, they must be re-created.
If a shortcut in the source structure points to a file/folder that is not in the source structure:
* The shortcut is re-created to point to the original file/folder.
@@ -263,7 +261,6 @@ When a folder is copied, its permissions are not copied; these options control c
of the form `option [<Boolean>]`; if `<Boolean>` is omitted, `true` is assumed.
When copied, a target folder inherits the permissions of its parent folder; these options control whether/how GAM copies the existing source folder permissions.
The default values of options introduced in version 6.14.00 are set to match the behavior of earlier versions.
When `mergewithparent` is `true`:
*`copymergewithparentfolderpermissions false` - The permissions of the source top folder are not not copied to the target folder; this is the default action.
@@ -352,6 +349,8 @@ Linux/MacOS
fileId=$(gam user user@domain.com copy drivefile <DriveFileEntity> ... returnidonly)
### Copy content of a Shared Drive to another Shared Drive
Suppose you have a source Shared Drive called 0AC_1AB with multiple files and folders, and want to copy all of its content to the target Shared Drive 0AE_9ZX.
Suppose you have a source Shared Drive with ID 0AC_1AB with multiple files and folders, and want to copy all of its content to the target Shared Drive with ID 0AE_9ZX.
The following command will copy the content, files and folders inside the source drive recursively, and put them in the target drive.
### Copy content of a source Shared Drive to a target Shared Drive with parallel Processing
Suppose you have a source Shared Drive with ID 0AC_1AB with multiple files and folders, and want to copy all of its content to the target Shared Drive with ID 0AE_9ZX.
for /f "delims=" %a in ('gam user user@domain.com create drivefile mimetype gfolder teamdriveparentid 0AE-9ZX drivefilename "New Folder Name" returnidonly') do set taregtFolderId=%a
No existing parents are copied for source top/sub files/folders.
### Removed options
The following options will generate an error; they were removed in 6.23.00:
* `copysubfileparents` and `copysubfolderparents`.
### Move Folder Permissions
When a folder is moved by recreating it, its permissions are not copied; these options control copying permissions for folders.
When a folder is moved by recreating it, its permissions are not copied by the Drive API; these options control copying permissions for folders.
For options of the form `option [<Boolean>]`; if `<Boolean>` is omitted, `true` is assumed.
When recreated, a target folder inherits the permissions of its parent folder; these options control whether/how GAM copies the existing source folder permissions;
The default values of options introduced in version 6.14.00 are set to match the behavior of earlier versions.
When `mergewithparent` is `true`:
* `copymergewithparentfolderpermissions false` - The permissions of the source top folder are not not copied to the target folder; this is the default action.
@@ -594,7 +634,7 @@ When `duplicatefolders` is `merge` and a sub folder is a duplicate:
* `copymergedsubfolderpermissions false` - The permissions of the source sub folder are not not copied to the target folder.
* `copymergedsubfolderpermissions true` - The permissions of the source sub folder are copied to the target folder; this is the default action.
When `duplicatefolders` is `duplicatename` or `uniquename` and a top/sub folder is not a duplicate:
When `duplicatefolders` is `merge` or `duplicatename` or `uniquename` and a top/sub folder is not a duplicate:
* `copytopfolderpermissions true` - The permissions of the source top folder are copied to the target folder; this is the default action.
* `copytopfolderpermissions false` - The permissions of the source top folder are not not copied to the target folder.
* `copysubfolderpermissions true` - The permissions of the source sub folders are copied to the target folder; this is the default action.
Starting in version 6.27.02, you can get Drive label information without an extra API call
if you know the `<ClassificationLabelID>`s. Add `labelinfo` to your `fields` list and use `includelabels <ClassificationLabelIDList>`
to specify the Drive labels.
You can get Drive label information without an extra API call if you know the `<ClassificationLabelID>`s.
Add `labelinfo` to your `fields` list and use `includelabels <ClassificationLabelIDList>` to specify the Drive labels.
```
gam user user@domain.com show fileinfo <DriveFileEntity> fields id,name,mimetype,labelinfo includelabels "mRoha85IbwCRl490E00xGLvBsSbkwIiuZ6PRNNEbbFcb"
```
@@ -504,7 +503,7 @@ gam user user@domain.com show fileinfo <DriveFileEntity> fields id,name,mimetype
The `stripcrsfromname` option strips nulls, carriage returns and linefeeds from drive file names.
Use this option if you discover filenames containing these special characters; it is not common.
Starting in version 6.80.10, the option `followshortcuts [<Boolean>]` that when true and `<DriveFileEntity` is a shortcut,
The option `followshortcuts [<Boolean>]` that when true and `<DriveFileEntity` is a shortcut,
causes GAM to display information about the target of the shortcut rather than the shortcut itself.
By default, Gam displays the information as an indented list of keys and values.
@@ -540,7 +539,7 @@ Use this option if you discover filenames containing these special characters; i
By default, when printing file paths, all paths for a file are displayed on the same row; use `oneitemperrow` to
have each file path displayed on a separate row.
Starting in version 6.80.10, the option `followshortcuts [<Boolean>]` that when true and `<DriveFileEntity` is a shortcut,
The option `followshortcuts [<Boolean>]` that when true and `<DriveFileEntity` is a shortcut,
causes GAM to display path information for the target of the shortcut rather than the shortcut itself.
## Select files for Display file counts, list, tree
@@ -1197,7 +1196,7 @@ These options can be used instead of the query options to select a specific fold
* `select <DriveFileEntity>` - All files in the selected folder and below are shown.
* To select the root folder of My Drive, use its `<DriveFolderID>` obtained by `gam user <UserItem> show fileinfo root id`
* `select <IDfrom Above>`
* Starting in version 6.22.14, you can select the root folder of My Drive with `rootid`.
* You can select the root folder of My Drive with `rootid`.
* `select rootid`
* `selectsubquery <QueryDriveFile>` - Only the files in the selected folder that match the query are shown.
@@ -1669,7 +1668,7 @@ There is a final row detailing files and folders in the trash; it is omitted if
* `depth` - Always -1
* `path` - Trash
GAM version `6.71.17` added the `depth` column that can be used to filter the depth of the folders displayed.
The `depth` column that can be used to filter the depth of the folders displayed.
Depth `-1` is the top level folder, depth `0` are its immediate children, depth `2` are the children of depth `1` and so forth.
For example to limit the display to the top folder and its immediate children, use `config csv_output_row_filter depth:count<1`.
@@ -39,11 +57,61 @@ The `convertalias` option causes GAM to make an extra API call per user in `<Use
to convert aliases to primary email addresses. If you know that all of the email addresses
in `<UserEntity>` are primary, you can omit `convertalias` and avoid the extra API calls.
## Delegation Notification
When creating a delegate, you can send a message to the delegate.
```
[notify [<Boolean>]
[subject <String>]
[from <EmailAaddress>] [mailbox <EmailAddress>]
[replyto <EmailAddress>]
[<NotifyMessageContent>] [html [<Boolean>]]
]
```
*`notify [<Boolean>]` - Should notification be sent
In the subject and message, these strings will be replaced with the specified values:
*`#user#` - user's email address
*`#delegate#` - delegate's email address
If subject is not specified, the following value will be used:
*`#user# mail delegation to #delegate#`
`<NotifyMessageContent>` is the message, there are four ways to specify it:
*`message|textmessage|htmlmessage <String>` - Use `<String>` as the message
*`file|htmlfile <FileName> [charset <Charset>]` - Read the message from `<FileName>`
*`gdoc|ghtml <UserGoogleDoc>` - Read the message from `<UserGoogleDoc>`
*`gcsdoc|gcshtml <StorageBucketObjectName>` - Read the message from the Google Cloud Storage file `<StorageBucketObjectName>`
If `<NotifyMessageContent>`is not specified, the following value will be used:
*`#user# has granted you #delegate# access to read, delete and send mail on their behalf.`
Unless specified in `<NotifyMessageContent>`, messages are sent as plain text,
use `html` or `html true` to indicate that the message is HTML.
Use `\n` in `message <String>` to indicate a line break; no other special characters are recognized.
By default, the email is sent from the admin user identified in oauth2.txt, `gam oauth info` will show the value.
Use `from <EmailAddress>` to specify an alternate from address.
Use `mailbox <EmailAddress>` if `from <EmailAddress>` specifies a group; GAM has to login as a user to be able to send a message.
Gam gets no indication as to the status of the message delivery; the from user will get a non-delivery receipt if the message could not be sent to the delegate.
@@ -419,6 +418,15 @@ this might be the user's secondary email address or their recovery email address
*`notify <EmailAddressList>` - Specify recipients
*`notifyrecoveryemail` - Use the user's recovery email address (if defined) as a recipient
In the subject and message, these strings will be replaced with the specified values:
*`#givenname#` - first/given name
*`#familyname#` - last/family name
*`#email#` - user's email address
*`#user#` - user's email address
*`#username#` - portion of user's email address before @
*`#domain#` - portion of user's email after after @
*`#password#` - password
If subject is not specified, the following value will be used:
* create - `Welcome to #domain#`
* update - `Account #user# password has been changed`
@@ -434,14 +442,8 @@ If `<NotifyMessageContent>`is not specified, the following value will be used:
Start using your new account by signing in at\nhttps://www.google.com/accounts/AccountChooser?Email=#user#&continue=https://workspace.google.com/dashboard\n`
* update - `The account password for #givenname# #familyname#, #user# has been changed to: #password#\n`
In the subject and message, these strings will be replaced with the specified values:
* `#givenname#` - first/given name
* `#familyname#` - last/family name
* `#email#` - user's email address
* `#user#` - user's email address
* `#username#` - portion of user's email address before @
* `#domain#` - portion of user's email after after @
* `#password#` - password
Unless specified in `<NotifyMessageContent>`, messages are sent as plain text,
use `html` or `html true` to indicate that the message is HTML.
Use `\n` in `message <String>` to indicate a line break; no other special characters are recognized.
@@ -464,8 +466,6 @@ Use `from <EmailAddress>` to specify an alternate from address.
Use `mailbox <EmailAddress>` if `from <EmailAddress>` specifies a group; GAM has to login as a user to be able to send a message.
Gam gets no indication as to the status of the message delivery; the from user will get a non-delivery receipt if the message could not be sent to the `notify <EmailAddressList>`.
By default, messages are sent as plain text, use `html` or `html true` to indicate that the message is HTML.
## Define schema fields
You can set custom schema field values for users; schema fields can be scalar, a single value, or can be multivalued.
@@ -996,11 +993,9 @@ gam <UserTypeEntity> info users
For `info users`, unlike all other GAM commands, a `<UserTypeEntity>` value of `all users` is actually `all users_ns_susp` not `all users_ns`.
This is a backwards compatibility issue.
Starting in version `5.23.01`, the variable `quick_info_user` was added to `gam.cfg` to control how much information requiring additional API calls is displayed.
(Prior to version `5.23.01`, assume `quick_info_user = False`.)
The variable `quick_info_user` was added to `gam.cfg` controls how much information requiring additional API calls is displayed.
`quick_info_user = False`: Gam makes additional API calls to get more information; you can selectively eliminate these calls to improve performance.
* `noaliases` - Do not get alias information
* `nobuildingnames` - Do not get building names for locations
* `nogroups` - Do not get group membership information
@@ -1344,8 +1339,11 @@ To retrieve the count with `showitemcountonly`:
**Alternative Approach**: For enhanced security and simplified operations when running GAM outside Google Cloud, consider [Workload Identity Federation](https://github.com/GAM-team/GAM/wiki/Using-GAM7-with-keyless-authentication-Workload-Identity-Federation) - Google's recommended keyless authentication method that eliminates the need for managing any long-lived credentials. If running GAM in Google Cloud, use [attached service accounts on GCE](https://github.com/GAM-team/GAM/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine) instead.
## Thanks
Thanks to Jay Lee for the original version of this document.
## Introduction
GAM7 supports using a [YubiKey](https://www.yubico.com/products/yubikey-5-overview/) to generate and store the service account's private RSA key. Private keys generated by the YubiKey cannot be exported even to the computer running GAM7. When compared to the plain text oauth2service.json file with the private key stored in text, the YubiKey offers a more secure option that prevents digital theft and copying of the private key. Instead of reading the private key from the oauth2service.json file and signing requests itself, GAM7 will simply send signing requests to the YubiKey and get back the signature.
GAM7 version 6.50.01 or higher is required. Best practice is to always use the [latest version of GAM7](https://github.com/GAM-team/GAM/wiki/How-to-Update-Advanced-GAM).
## FAQs
### Can I use a Google Titan or other brand security key?
No, while Titan keys are great as security keys / U2F / 2SV, that is not the protocol being used by GAM7 here. GAM7 uses the PIV app of YubiKeys to work with service accounts. You need to use [a genuine Yubikey.](https://yubico.com/genuine/).
@@ -36,7 +29,7 @@ No, because the YubiKey generated the private key it cannot be digitally exporte
When using domain-wide delegation with GAM7, the service account and anyone possessing the service account private key oauth2service.json file has access to the Gmail, Drive and Calendar data of ALL Workspace users in your domain. For this reason, whether using a YubiKey or not, you should take strong measures to protect the service account private key.
## Setup Steps
1.Upgrade to at least GAM7 6.50.01.
1 .Upgrade to the [latest version of GAM7](https://github.com/GAM-team/GAM/wiki/How-to-Update-GAM7).
2.**If you are using a new YubiKey or don't care about the PIV app data on the YubiKey**
1. Tell GAM7 to reset and configure the PIV app data on the YubiKey. This wipes all existing keys and configuration and then configures a private key and PIN for GAM7.
@@ -24,7 +24,7 @@ Not all Google Admin APIs work with DASA right no:
* GAM7 support for DASA is still experimental and some things may fail. Please report your findings to the [GAM group](https://groups.google.com/g/google-apps-manager).
## Setup Steps
1. Upgrade to at least GAM7 6.50.00. Best practice is to always use the [latest version of GAM7](https://github.com/GAM-team/GAM/wiki/How-to-Update-Advanced-GAM).
1. Upgrade to the [latest version of GAM7](https://github.com/GAM-team/GAM/wiki/How-to-Update-GAM7).
2. Follow the steps in `gam create project` up to the point where you are presented with a URL to the Cloud console to create a Client ID and secret. You don’t need to enter anything those, just press CTRL+C to quit the project creation.
You specify matters, exports and holds by ID (`<UniqueID>`) or name (`<String>`). The API requires an ID, so if you specify a name,
GAM has to make additional API calls to convert the name to an ID.
## Special quoting
You specify a single matter with `matter <MatterItem>` and a list of matters with `matters <MatterItemList>`.
As matter names can contain spaces, some care must be used when entering `<MatterItem>` and `<MatterItemList>` with names.
Suppose you have a matter `Foo Bar`. To get information about a specific export: `gam info vaultexport "Foo Bar" <ExportItem>`
The shell strips the `"` leaving a single argument `Foo Bar`; gam correctly processes the argument.
Suppose you enter the command: `gam show vaultexports matters "Foo Bar"`
The shell strips the `"` leaving a single argument `Foo Bar`; gam splits the argument on space leaving two items and then tries to process `Foo` and `Bar`, not what you want.
You must enter: `gam info show vaultexports matters "'Foo Bar'"`
The shell strips the `"` leaving a single argument `'Foo Bar'`; gam splits the argument on space while honoring the `'` leaving one item `Foo Bar` and correctly processes the item.
For quoting rules, see: [List Quoting Rules](Command-Line-Parsing)
## Vault Matters
## Create Vault Matters
Create a Google Vault matter.
@@ -201,11 +230,18 @@ Select fields to display:
*`fields <VaultMatterFieldNameList>` - Display selected fields; `matterId` and `name` are always displayed
## Display Vault Counts
Display item counts retained in Vault for the given users or groups.
### Display item counts retained in Vault using a saved Vault query.
*`accounts <EmailAddressEntity>` - Search all accounts specified in `<EmailAddressEntity>`
*`orgunit|org|ou <OrgUnitPath>` - Search all accounts in the OU `<OrgUnitPath>`
*`everyone` - Search for all accounts in the organization
*`shareddrives|teamdrives <SharedDriveIDList>` - Search for all accounts in the Shared Drives specified in `<SharedDriveIDList>`
*`shareddrives|teamdrives select <FileSelector>|<CSVFileSelector>` - Search for all accounts in the Shared Drives specified in `<FileSelector>|<CSVFileSelector>`
*`rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<ChatSpaceList>`
*`rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<FileSelector>|<CSVFileSelector>`
*`sitesurl <URLList>` - Search the published site URLs of new Google Sites in `<URLList>`
*`sitesurl <URLList>` - Search the published site URLs of new Google Sites specified in `<FileSelector>|<CSVFileSelector>`
*`everyone|entireorg` - Search for all accounts in the organization
For `corpus mail|group`, you can specify search terms to limit the search.
For `corpus mail|group`, you can specify time limits on the search:
*`start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
*`end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
You can specify query options with `<JSONData>`.
Check the status of a previous count operation with the name from a previous command.
<MatterItem> specifies the matter name or ID the export should be associated with.
Specify the name of the export:
*`name <String>` - The export will be named `<String>`
*`default` - The export will be named `GAM <corpus> Export - <Time>`
If `name <String>` is omitted, the export will be named `GAM <corpus> Export - <Time>`
## Vault Query options
Specify the corpus of data, this option is required:
*`calendar`
@@ -281,13 +335,15 @@ Specify the corpus of data, this option is required:
Specify the search method, this option is required:
*`accounts <EmailAddressEntity>` - Search all accounts specified in `<EmailAddressEntity>`
*`orgunit|org|ou <OrgUnitPath>` - Search all accounts in the OU `<OrgUnitPath>`
*`everyone` - Search for all accounts in the organization
*`everyone|entireorg` - Search for all accounts in the organization
*`documentids <DriveFileIDList>` - Search for all drive files specified in `<DriveFileIDList>`
*`documentids select <FileSelector>|<CSVFileSelector>` - Search for all drive files specified in `<FileSelector>|<CSVFileSelector>`
*`shareddrives|teamdrives <SharedDriveIDList>` - Search for all accounts in the Shared Drives specified in `<SharedDriveIDList>`
*`shareddrives|teamdrives select <FileSelector>|<CSVFileSelector>` - Search for all accounts in the Shared Drives specified in `<FileSelector>|<CSVFileSelector>`
*`rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<ChatSpaceList>`
*`rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<FileSelector>|<CSVFileSelector>`
*`sitesurl <URLList>` - Search the published site URLs of new Google Sites in `<URLList>`
*`sitesurl <URLList>` - Search the published site URLs of new Google Sites specified in `<FileSelector>|<CSVFileSelector>`
*`rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<ChatSpaceList>`
*`rooms <ChatSpaceList>` - Search in the Room specified in the chat rooms specified in `<FileSelector>|<CSVFileSelector>`
Specify the scope of data to include in the export:
*`all_data` - All available data; this is the default
@@ -320,10 +376,6 @@ For `corpus calendar`, you can specify advanced search options:
* Search the current version of the Calendar event, but export the contents of the last version saved before 12:00 AM UTC on the specified date.
* Enter the date in UTC.
For `corpus calendar`, you can specify the format of the exported data:
*`format ics` - Export in ICS format, this is the default
*`format pst` - Export in PST format
For `corpus drive`, you can specify advanced search options:
*`driveversiondate <Date>|<Time>` - Search the versions of the Drive file as of the reference date. These timestamps are in GMT and rounded down to the given date.
*`includeshareddrives False` - Mapped to `sharedrivesoption included_if_account_is_not_a_member`
@@ -331,6 +383,16 @@ For `corpus drive`, you can specify advanced search options:
*`sharedrivesoption included` - Resources in shared drives are included in the search
*`sharedrivesoption included_if_account_is_not_a_member` - Resources in shared drives where account is not a member are included in the search, this is the default
*`sharedrivesoption not_included` - Resources in shared drives are not included in the search
For `corpus hangouts_chat` you can specify advanced search options:
*`includerooms False` - Do not include rooms, this is the default
*`includerooms True` - Include rooms
You can specify query options with `<JSONData>`.
## Vault Export options
For `corpus drive`, you can specify advanced search options:
*`driveclientsideencryption any` - Include both client-side encrypted and unencrypted content in search, this is the default.
*`driveclientsideencryption encrypted` - Include client-side encrypted content only in search.
*`driveclientsideencryption unencrypted` - Include client-side unencrypted content only in search.
@@ -339,10 +401,6 @@ For `corpus drive`, you can specify whether to include access information for us
*`includeaccessinfo False` - Do not include access information for users with indirect access, this is the default
*`includeaccessinfo True` - Include access information for users with indirect access
For `corpus hangouts_chat` you can specify advanced search options:
*`includerooms False` - Do not include rooms, this is the default
*`includerooms True` - Include rooms
For `corpus mail`, you can specify advanced search options:
*`excludedrafts False` - Do not exclude drafts, this is the default
*`excludedrafts True` - Exclude drafts
@@ -365,18 +423,18 @@ For `corpus mail`, you can specify whether to enable exporting linked Drive file
Why would you want to download files one by one when GAM can download all Cloud Storage objects in one go? Because all of the files combined **might** take up a lot of space (think Terabytes in case of a Drive export of many years) whereas individually, each file will be in a much more manageable ~10 Gigabyte range.
## Copy Vault Exports
Many thanks to Jay for this command and documentation.
For `corpus mail`, you can specify time limits on the search:
For `corpus mail|group`, you can specify time limits on the search:
*`start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
*`end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
@@ -649,7 +720,8 @@ For `corpus hangouts_chat` you can specify advanced search options:
*`includerooms False` - Do not include rooms, this is the default
*`includerooms True` - Include rooms
For `corpus voice` you can specify the data covered by the hold:
For `corpus voice` you can specify the data covered by the hold,
For a hold with `corpus mail`, you can specify time limits on the search:
For a hold with `corpus mai|groupsl`, you can specify time limits on the search:
*`start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
*`end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
@@ -684,7 +756,8 @@ For a hold with `corpus hangouts_chat` you can specify advanced search options:
*`includerooms False` - Do not include rooms, this is the default
*`includerooms True` - Include rooms
For a hold with `corpus voice` you can specify the data covered by the hold:
For a hold with `corpus voice` you can specify the data covered by the hold,
multiple values are allowed.:
*`covereddata calllogs` - Call logs
*`covereddata textmessages` - Voice text messages
*`covereddata voicemail` - Voicemail
@@ -752,6 +825,67 @@ gam <UserTypeEntity> show vaultholds|holds
If `name <String>` is omitted, the query is named `GAM <corpus> Query - <Time>`
The `shownames` argument controls whether org unit and shared drive names are displayed in queries; additional API calls are required to get the names.
See: [Vault Query options](#vault-query-options)
Use the `showdetails` option to have the full details of the saved query displayed.
Use the `returnidonly` option to have only the saved query ID displayed.
Use the `formatjson` option to have only the saved query JSON displayed.
If `targetmatter <MatterItem>` is omitted, the query is copied in the source matter.
If `name <String>` is omitted:
*`targetmatter <MatterItem>` specified - The copied query has the same name as the source query
*`targetmatter <MatterItem>` omitted - The copied query is named `Copy of Source Query name`
The `shownames` argument controls whether org unit and shared drive names are displayed in queries; additional API calls are required to get the names.
Use the `showdetails` option to have the full details of the saved query displayed.
Use the `returnidonly` option to have only the saved query ID displayed.
Use the `formatjson` option to have only the saved query JSON displayed.
gam info vaultquery <QueryItem> matter <MatterItem>
@@ -791,10 +925,9 @@ Select fields to display:
The `shownames` argument controls whether org unit and shared drive names are displayed in queries; additional API calls are required to get the names.
# Takeout
Many thanks to Jay for these commands and documentation.
## Takeout
GAM 6.42.00 and newer support copying and downloading Google Cloud Storage (GCS) buckets generated by [organization-wide Takeout](https://support.google.com/a/answer/100458?hl=en).
GAM supports copying and downloading Google Cloud Storage (GCS) buckets generated by [organization-wide Takeout](https://support.google.com/a/answer/100458?hl=en).
Once the Takeout completes you need to copy the name of the GCS bucket and provide it to GAM.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.