# Users - Shared Drives - [API documentation](#api-documentation) - [Query documentation](#query-documentation) - [Definitions](#definitions) - [GUI API permission name mapping](#gui-api-permission-name-mapping) - [Display Shared Drive themes](#display-shared-drive-themes) - [Manage Shared Drives](#manage-shared-drives) - [Create a Shared Drive](#create-a-shared-drive) - [Bulk Create Shared Drives](#bulk-create-shared-drives) - [Update Shared Drive settings](#update-shared-drive-settings) - [Delete a Shared Drive](#delete-a-shared-drive) - [Change Shared Drive visibility](#change-shared-drive-visibility) - [Display Shared Drives](#display-shared-drives) - [Manage Shared Drive access](#manage-shared-drive-access) - [Display Shared Drive access](#display-shared-drive-access) - [Display Shared Drive access for specific Shared Drives](#display-shared-drive-access-for-specific-shared-drives) - [Display Shared Drive access for selected Shared Drives](#display-shared-drive-access-for-selected-shared-drives) - [Change User1 Shared Drive access to User2](#change-user1-shared-drive-access-to-user2) - [Display empty folders on a Shared Drive](#display-empty-folders-on-a-shared-drive) - [Delete empty folders on a Shared Drive](#delete-empty-folders-on-a-shared-drive) - [Empty the trash on a Shared Drive](#empty-the-trash-on-a-shared-drive) - [Commands not applicable to Shared Drives](#commands-not-applicable-to-shared-drives) ## API documentation * https://developers.google.com/drive/v3/reference/files * https://developers.google.com/drive/v3/web/manage-teamdrives#managing_team_drives_for_domain_administrators * https://support.google.com/a/answer/7374057 * https://workspaceupdates.googleblog.com/2022/05/shared-drives-in-organizational-units-open-beta.html * https://support.google.com/a/users/answer/7338880 ## Query documentation * https://developers.google.com/drive/api/v3/search-shareddrives ## Definitions * [``](Drive-File-Selection) * [``](Collections-of-Users) ``` ::= "#" ::= asparagus|bluevelvet|bubblegum|cardinal|chocolateicecream|denim|desertsand| earthworm|macaroni|marsorange|mountaingray|mountaingrey|mouse|oldbrickred| pool|purpledino|purplerain|rainysky|seafoam|slimegreen|spearmint| toyeggplant|vernfern|wildstrawberries|yellowcab ::= aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond| blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral| cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray| darkgrey|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid| darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey| darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue| firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod| gray|grey|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki| lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan| lightgoldenrodyellow|lightgray|lightgrey|lightgreen|lightpink|lightsalmon| lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue| lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue| mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen| mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin| navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid| palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff| peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon| sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray| slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet| wheat|white|whitesmoke|yellow|yellowgreen ::= | ::= | ``` ``` ::= (json [charset ] ) | (json file [charset ]) | ::= manager|organizer|owner| contentmanager|fileorganizer| contributor|writer|editor| commenter| viewer|reader ::= anyone|domain|group|user ::= anyone|anyonewithlink| user:|group:| domain:|domainwithlink:; ::= anyone|anyonewithlink|id: ::= | ::= "(, ::= "(,)*" ::= | | | | | ::= | | | | | ::= manager|organizer|owner| contentmanager|fileorganizer| contributor|writer|editor| commenter| viewer|reader ::= "(,)*" ::= ::= ::= | (teamdriveid )|(teamdriveid:)| (teamdrive )|(teamdrive:) ::= backgroundimagefile| backgroundimagelink| capabilities| colorrgb| createdtime| id| name| themeid ::= "(,)*" ::= (teamdriveid ) | (teamdriveid:) ::= (teamdrive ) | (teamdrive:) ::= (teamdrivefilename ) | (teamdrivefilename:) ::= (teamdrivequery ) | (teamdrivequery:) ::= all_files | all_folders | all_google_files | all_non_google_files | all_items ::= [] | [] | | | | | ) | ) ::= adminmanagedrestrictions| allowcontentmanagerstosharefolders| copyrequireswriterpermission| domainusersonly| drivemembersonly|teammembersonly| sharingfoldersrequiresorganizerpermission Each pair of restrictions below are equivalent: allowcontentmanagerstosharefolders true sharingfoldersrequiresorganizerpermission false allowcontentmanagerstosharefolders false sharingfoldersrequiresorganizerpermission true ``` ## GUI API permission name mapping | GUI setting | API setting | |------------|------------| | Manager | organizer | | Content manager | fileOrganizer | | Contributor | writer | | Commenter | commenter | | Viewer | reader | ## Display Shared Drive themes ``` gam show teamdrivethemes ``` ## Manage Shared Drives ## Create a Shared Drive The user that creates a Shared Drive is given the permission role organizer for the Shared Drive, ``` gam create teamdrive [(theme|themeid )| ([customtheme ] [color ])] ( )* [hide ] [ou|org|orgunit ] [errorretries ] [updateinitialdelay ] [updateretrydelay ] [(csv [todrive *] (addcsvdata )*) | returnidonly] ``` * `themeid` - a Shared Drive themeId obtained from `show teamdrivethemes` * `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives * `` - X coordinate, typically 0.0 * `` - Y coordinate, typically 0.0 * `` - width, typically 1.0 * `color` - set the Shared Drive color * ` ` - Set Shared Drive Restrictions * `hide ` - Set Shared Drive visibility If any attributes other than `themeid` are specified, GAM must create the Drive and then update the Drive attributes. Even though the Create API returns success, the Update API fails and reports that the Drive does not exist. * `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 For this reason, GAM waits `updateinitialdelay ` seconds after the create before attempting the update. GAM repeats the update `errorretries ` times waiting `updateretrydelay ` between tries if the Update API continues to fail. This is acceptable when creating a single Shared Drive, for bulk Shared Drive creation see [Bulk Create Shared Drives](#bulk-create-shared-drives). This option is only available when the command is run as an administrator. * `ou|org|orgunit ` - See: https://workspaceupdates.googleblog.com/2022/05/shared-drives-in-organizational-units-open-beta.html By default, the user and Shared Drive name and ID values are displayed on stdout. * `csv [todrive *]` - Write user, Shared Drive name and ID values to a CSV file. * `addcsvdata ` - Add additional columns of data from the command line to the output * `returnidonly` - Display just the ID of the created Shared Drive as output When either of these options is chosen, no infomation about Shared Drive restrictions or hiding will be displayed. To retrieve the Shared Drive ID with `returnidonly`: ``` Linux/MacOS teamDriveId=$(gam user user@domain.com create teamdrive ... returnidonly) Windows PowerShell $teamDriveId = & gam user user@domain.com create teamdrive ... returnidonly ``` ## Bulk Create Shared Drives Most Shared Drive attributes can't be applied as part of the create, the Drive must be created and then updated with the desired attributes. As a newly created Drive can't be updated for 30+ seconds; split the operation into two commands: create and update. Make a CSV file SharedDriveNames.csv with at least two columns, User and name. ``` gam redirect csv ./SharedDrivesCreated.csv multiprocess csv SharedDriveNames.csv gam user "~User" create teamdrive "~name" csv ``` This will create a three column CSV file SharedDriveNamesIDs.csv with columns: User,name,id * There will be a row for each Shared Drive. Use the SharedDrivesCreated.csv file to apply the desired options/attributes. ``` gam redirect stdout ./SharedDrivesUpdated.txt multiprocess redirect stderr stdout csv ./SharedDrivesCreated.csv gam user "~User" update shareddrive "~id" [options/attributes as desired] ``` ## Update Shared Drive settings This command is used to set basic Shared Drive settings. ``` gam update teamdrive [adminaccess|asadmin] [name ] [(theme|themeid )| ([customtheme ] [color ])] ( )* [hide|hidden ] [ou|org|orgunit ] ``` * `themeid` - a Shared Drive themeId obtained from `show teamdrivethemes` * `customtheme` - set the backgroundImageFile property described here: https://developers.google.com/drive/v3/reference/teamdrives * `color` - set the Shared Drive color * ` ` - Set Shared Drive Restrictions * `hidden ` - Set Shared Drive visibility This option is only available when the command is run as an administrator. * `ou|org|orgunit ` - See: https://workspaceupdates.googleblog.com/2022/05/shared-drives-in-organizational-units-open-beta.html ## Delete a Shared Drive ``` gam delete teamdrive [allowitemdeletion] [adminaccess|asadmin] ``` By default, deleting a Shared Drive that contains any files/folders will fail. The `allowitemdeletion` option allows a Super Admin to delete a non-empty Shared Drive. This is not reversible, proceed with caution. ## Change Shared Drive visibility ``` gam hide teamdrive gam unhide teamdrive ``` ## Display Shared Drives ``` gam show teamdriveinfo gam info teamdrive [fields ] [guiroles [] [formatjson] gam show teamdriveinfo [fields ] [guiroles [] [formatjson] gam show teamdrives [matchname ] (role|roles )* [fields ] [guiroles [] [formatjson] ``` By default, Gam displays all Teams Drives accessible by the user. * `matchname ` - Display Shared Drives with names that match a pattern. * `(role|roles )* - Display Shared Drives where the user has one of the specified roles. By default, Gam displays the information as an indented list of keys and values. * `formatjson` - Display the fields in JSON format. ``` gam print teamdrives [todrive *] [matchname ] (role|roles )* [fields ] [formatjson [quotechar ]] ``` By default, Gam displays all Teams Drives accessible by the user. * `matchname ` - Display Shared Drives with names that match a pattern. * `(role|roles )*` - Display Shared Drives where the user has one of the specified roles. The Google Drive API does not list roles for Shared Drives so GAM generates a role from the capabilities: * `commenter - canComment: True, canEdit: False` * `reader - canComment: False, canEdit: False` * `writer - canEdit: True, canTrashChildren: False` * `fileOrganizer - canTrashChildren: True, canManageMembers: False` * `organizer - canManageMembers: True` By default, the Drive API role names are displayed, use `guiroles` to display the Google Drive GUI role names. ``` API: GUI commenter: Commenter fileOrganizer: Content manager organizer: Manager reader: Viewer writer: Contributor ``` 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 ` 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. ## Manage Shared Drive access These commands must be issued by a user with Shared Drive permission role organizer. ### Process single ACLs. ``` gam add drivefileacl anyone|(user )|(group )|(domain ) (role ) [withlink|(allowfilediscovery|discoverable [])] [expires|expiration