name: google-drive-automation
description: Automate Google Drive file operations (upload, download, search, share, organize) via Rube MCP (Composio). Upload/download files, manage folders, share with permissions, and search across drives programmatically.
tags: [automation, devops]
Google Drive Automation via Rube MCP
Automate Google Drive workflows including file upload/download, search, folder management, sharing/permissions, and organization through Composio's Google Drive toolkit.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Google Drive connection via
RUBE_MANAGE_CONNECTIONS with toolkit googledrive
- Always call
RUBE_SEARCH_TOOLS first to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLS responds
- Call
RUBE_MANAGE_CONNECTIONS with toolkit googledrive
- If connection is not ACTIVE, follow the returned auth link to complete Google OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Upload and Download Files
When to use: User wants to upload files to or download files from Google Drive
Tool sequence:
GOOGLEDRIVE_FIND_FILE - Locate target folder for upload [Prerequisite]
GOOGLEDRIVE_UPLOAD_FILE - Upload a file (max 5MB) [Required]
GOOGLEDRIVE_RESUMABLE_UPLOAD - Upload large files [Fallback]
GOOGLEDRIVE_DOWNLOAD_FILE - Download a file by ID [Required]
GOOGLEDRIVE_DOWNLOAD_FILE_OPERATION - Track long-running downloads [Fallback]
GOOGLEDRIVE_GET_FILE_METADATA - Verify file after upload/download [Optional]
Key parameters:
file_to_upload: Object with name, mimetype, and s3key (file must be in internal storage)
folder_to_upload_to: Target folder ID (optional; uploads to root if omitted)
file_id: ID of file to download
mime_type: Export format for Google Workspace files only (omit for native files)
Pitfalls:
GOOGLEDRIVE_UPLOAD_FILE requires file_to_upload.s3key; files must already be in internal storage
- For non-Google formats (Excel, PDF), do NOT set
mime_type; it causes errors for native files
- Download responses provide a temporary URL at
data.downloaded_file_content.s3url, not inline bytes
- Use
GOOGLEDRIVE_RESUMABLE_UPLOAD for files >5MB or when basic uploads fail
2. Search and List Files
When to use: User wants to find specific files or browse Drive contents
Tool sequence:
GOOGLEDRIVE_FIND_FILE - Search by name, content, type, date, or folder [Required]
GOOGLEDRIVE_LIST_FILES - Browse files with folder scoping [Alternative]
GOOGLEDRIVE_LIST_SHARED_DRIVES - Enumerate shared drives [Optional]
GOOGLEDRIVE_GET_FILE_METADATA - Get detailed file info [Optional]
GOOGLEDRIVE_GET_ABOUT - Check storage quota and supported formats [Optional]
Key parameters:
q: Drive query string (e.g., "name contains 'report'", "mimeType = 'application/pdf'")
corpora: Search scope ('user', 'domain', 'drive', 'allDrives')
fields: Response fields to include (e.g., 'files(id,name,mimeType)')
orderBy: Sort key ('modifiedTime desc', 'name', 'quotaBytesUsed desc')
pageSize: Results per page (max 1000)
pageToken: Pagination cursor from nextPageToken
folder_id: Scope search to a specific folder
Pitfalls:
- 403 PERMISSION_DENIED if OAuth scopes insufficient for shared drives
- Pagination required; files are in
response.data.files; follow nextPageToken until exhausted
corpora="domain" may trigger 400; try "allDrives" with includeItemsFromAllDrives=true
- Query complexity limits: >5-10 OR clauses may error "The query is too complex"
- Wildcards (*) NOT supported in
name; use contains for partial matching
- 'My Drive' is NOT searchable by name; use
folder_id='root' for root folder
- User email searches: use
'user@example.com' in owners (NOT owner:user@example.com)
3. Share Files and Manage Permissions
When to use: User wants to share files or manage access permissions
Tool sequence:
GOOGLEDRIVE_FIND_FILE - Locate the file to share [Prerequisite]
GOOGLEDRIVE_ADD_FILE_SHARING_PREFERENCE - Set sharing permission [Required]
GOOGLEDRIVE_LIST_PERMISSIONS - View current permissions [Optional]
GOOGLEDRIVE_GET_PERMISSION - Inspect a specific permission [Optional]
GOOGLEDRIVE_UPDATE_PERMISSION - Modify existing permission [Optional]
GOOGLEDRIVE_DELETE_PERMISSION - Revoke access [Optional]
Key parameters:
file_id: ID of file to share
type: 'user', 'group', 'domain', or 'anyone'
role: 'owner', 'organizer', 'fileOrganizer', 'writer', 'commenter', 'reader'
email_address: Required for type='user' or 'group'
domain: Required for type='domain'
transfer_ownership: Required when role='owner'
Pitfalls:
- Invalid type/email combinations trigger 4xx errors
- Using
type='anyone' or powerful roles is risky; get explicit user confirmation
- Org policies may block certain sharing types, causing 403
- Permission changes may take time to propagate
- Use
GMAIL_SEARCH_PEOPLE to resolve contact names to emails before sharing
4. Create and Organize Folders
When to use: User wants to create folder structures or move files between folders
Tool sequence:
GOOGLEDRIVE_FIND_FILE - Check if folder already exists [Prerequisite]
GOOGLEDRIVE_CREATE_FOLDER - Create a new folder [Required]
GOOGLEDRIVE_GET_FILE_METADATA - Verify created folder [Optional]
GOOGLEDRIVE_MOVE_FILE - Move files between folders [Optional]
GOOGLEDRIVE_UPDATE_FILE_PUT - Update file metadata/parents [Alternative]
Key parameters:
name: Folder name
parent_id: Parent folder ID (NOT name); omit for root
file_id: File to move
add_parents: Destination folder ID for move
remove_parents: Source folder ID to remove from
Pitfalls:
GOOGLEDRIVE_CREATE_FOLDER requires parent_id as an ID, not a folder name
- Using
parent_id="root" creates at top level; for nested paths, chain folder IDs
GOOGLEDRIVE_FIND_FILE returns ~100 items/page; follow nextPageToken for large drives
- Move operations can leave items with multiple parents; use
remove_parents for true moves
- Always verify parent folder exists before creating children
Common Patterns
ID Resolution
- File/folder name -> ID:
GOOGLEDRIVE_FIND_FILE with q parameter
- Root folder: Use
folder_id='root' or 'root' in parents
- Shared drive -> driveId:
GOOGLEDRIVE_LIST_SHARED_DRIVES
- Contact name -> email:
GMAIL_SEARCH_PEOPLE (for sharing)
Query Syntax
Google Drive uses a specific query language:
- Name search:
"name contains 'report'" or "name = 'exact.pdf'"
- Type filter:
"mimeType = 'application/pdf'" or "mimeType = 'application/vnd.google-apps.folder'"
- Folder scoping:
"'FOLDER_ID' in parents"
- Date filter:
"modifiedTime > '2024-01-01T00:00:00'"
- Combine with
and/or/not: "name contains 'report' and trashed = false"
- Boolean filters:
"sharedWithMe = true", "starred = true", "trashed = false"
Pagination
- Follow
nextPageToken until absent for complete results
- Set
pageSize explicitly (default 100, max 1000)
- De-duplicate results if running multiple searches
Export Formats
For Google Workspace files, set mime_type to export:
- Docs:
application/pdf, text/plain, text/html, application/vnd.openxmlformats-officedocument.wordprocessingml.document
- Sheets:
text/csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- Slides:
application/pdf, application/vnd.openxmlformats-officedocument.presentationml.presentation
Known Pitfalls
- Internal storage required: Upload requires files in internal S3 storage (s3key)
- Export vs download: Set
mime_type ONLY for Google Workspace files; omit for native files
- Temporary URLs: Downloaded content via
s3url is temporary; fetch promptly
- Query complexity: >5-10 OR clauses may error; split complex searches into multiple queries
- Shared drive scoping: Missing drive permissions yield empty results; verify access first
- No wildcards: Use
contains operator instead of * for partial name matching
- Folder creation chains: Always pass folder IDs (not names) as
parent_id
- Multiple parents: Move operations may leave items with multiple parents; use
remove_parents
- Rate limits: Heavy searches/exports can trigger 403/429; implement backoff
Quick Reference
| Task |
Tool Slug |
Key Params |
| Search files |
GOOGLEDRIVE_FIND_FILE |
q, corpora, pageSize |
| List files |
GOOGLEDRIVE_LIST_FILES |
folderId, q, orderBy |
| Upload file |
GOOGLEDRIVE_UPLOAD_FILE |
file_to_upload, folder_to_upload_to |
| Resumable upload |
GOOGLEDRIVE_RESUMABLE_UPLOAD |
file data |
| Download file |
GOOGLEDRIVE_DOWNLOAD_FILE |
file_id, mime_type (Workspace only) |
| File metadata |
GOOGLEDRIVE_GET_FILE_METADATA |
fileId, fields |
| Create folder |
GOOGLEDRIVE_CREATE_FOLDER |
name, parent_id |
| Move file |
GOOGLEDRIVE_MOVE_FILE |
file_id, add_parents, remove_parents |
| Share file |
GOOGLEDRIVE_ADD_FILE_SHARING_PREFERENCE |
file_id, role, type, email_address |
| List permissions |
GOOGLEDRIVE_LIST_PERMISSIONS |
fileId |
| Update permission |
GOOGLEDRIVE_UPDATE_PERMISSION |
file_id, permission_id |
| Delete permission |
GOOGLEDRIVE_DELETE_PERMISSION |
file_id, permission_id |
| List shared drives |
GOOGLEDRIVE_LIST_SHARED_DRIVES |
pageSize |
| Drive info |
GOOGLEDRIVE_GET_ABOUT |
(none) |
| Create shortcut |
GOOGLEDRIVE_CREATE_SHORTCUT_TO_FILE |
target file_id |
1---2name: google-drive-automation3description: <!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT -->4---5<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT -->6---7name: google-drive-automation8description: Automate Google Drive file operations (upload, download, search, share, organize) via Rube MCP (Composio). Upload/download files, manage folders, share with permissions, and search across drives programmatically.9tags: [automation, devops]10---1112# Google Drive Automation via Rube MCP1314Automate Google Drive workflows including file upload/download, search, folder management, sharing/permissions, and organization through Composio's Google Drive toolkit.1516## Prerequisites1718- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)19- Active Google Drive connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googledrive`20- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas2122## Setup2324**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.2526271. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds282. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `googledrive`293. If connection is not ACTIVE, follow the returned auth link to complete Google OAuth304. Confirm connection status shows ACTIVE before running any workflows3132## Core Workflows3334### 1. Upload and Download Files3536**When to use**: User wants to upload files to or download files from Google Drive3738**Tool sequence**:391. `GOOGLEDRIVE_FIND_FILE` - Locate target folder for upload [Prerequisite]402. `GOOGLEDRIVE_UPLOAD_FILE` - Upload a file (max 5MB) [Required]413. `GOOGLEDRIVE_RESUMABLE_UPLOAD` - Upload large files [Fallback]424. `GOOGLEDRIVE_DOWNLOAD_FILE` - Download a file by ID [Required]435. `GOOGLEDRIVE_DOWNLOAD_FILE_OPERATION` - Track long-running downloads [Fallback]446. `GOOGLEDRIVE_GET_FILE_METADATA` - Verify file after upload/download [Optional]4546**Key parameters**:47- `file_to_upload`: Object with `name`, `mimetype`, and `s3key` (file must be in internal storage)48- `folder_to_upload_to`: Target folder ID (optional; uploads to root if omitted)49- `file_id`: ID of file to download50- `mime_type`: Export format for Google Workspace files only (omit for native files)5152**Pitfalls**:53- `GOOGLEDRIVE_UPLOAD_FILE` requires `file_to_upload.s3key`; files must already be in internal storage54- For non-Google formats (Excel, PDF), do NOT set `mime_type`; it causes errors for native files55- Download responses provide a temporary URL at `data.downloaded_file_content.s3url`, not inline bytes56- Use `GOOGLEDRIVE_RESUMABLE_UPLOAD` for files >5MB or when basic uploads fail5758### 2. Search and List Files5960**When to use**: User wants to find specific files or browse Drive contents6162**Tool sequence**:631. `GOOGLEDRIVE_FIND_FILE` - Search by name, content, type, date, or folder [Required]642. `GOOGLEDRIVE_LIST_FILES` - Browse files with folder scoping [Alternative]653. `GOOGLEDRIVE_LIST_SHARED_DRIVES` - Enumerate shared drives [Optional]664. `GOOGLEDRIVE_GET_FILE_METADATA` - Get detailed file info [Optional]675. `GOOGLEDRIVE_GET_ABOUT` - Check storage quota and supported formats [Optional]6869**Key parameters**:70- `q`: Drive query string (e.g., "name contains 'report'", "mimeType = 'application/pdf'")71- `corpora`: Search scope ('user', 'domain', 'drive', 'allDrives')72- `fields`: Response fields to include (e.g., 'files(id,name,mimeType)')73- `orderBy`: Sort key ('modifiedTime desc', 'name', 'quotaBytesUsed desc')74- `pageSize`: Results per page (max 1000)75- `pageToken`: Pagination cursor from `nextPageToken`76- `folder_id`: Scope search to a specific folder7778**Pitfalls**:79- 403 PERMISSION_DENIED if OAuth scopes insufficient for shared drives80- Pagination required; files are in `response.data.files`; follow `nextPageToken` until exhausted81- `corpora="domain"` may trigger 400; try `"allDrives"` with `includeItemsFromAllDrives=true`82- Query complexity limits: >5-10 OR clauses may error "The query is too complex"83- Wildcards (*) NOT supported in `name`; use `contains` for partial matching84- 'My Drive' is NOT searchable by name; use `folder_id='root'` for root folder85- User email searches: use `'user@example.com' in owners` (NOT `owner:user@example.com`)8687### 3. Share Files and Manage Permissions8889**When to use**: User wants to share files or manage access permissions9091**Tool sequence**:921. `GOOGLEDRIVE_FIND_FILE` - Locate the file to share [Prerequisite]932. `GOOGLEDRIVE_ADD_FILE_SHARING_PREFERENCE` - Set sharing permission [Required]943. `GOOGLEDRIVE_LIST_PERMISSIONS` - View current permissions [Optional]954. `GOOGLEDRIVE_GET_PERMISSION` - Inspect a specific permission [Optional]965. `GOOGLEDRIVE_UPDATE_PERMISSION` - Modify existing permission [Optional]976. `GOOGLEDRIVE_DELETE_PERMISSION` - Revoke access [Optional]9899**Key parameters**:100- `file_id`: ID of file to share101- `type`: 'user', 'group', 'domain', or 'anyone'102- `role`: 'owner', 'organizer', 'fileOrganizer', 'writer', 'commenter', 'reader'103- `email_address`: Required for type='user' or 'group'104- `domain`: Required for type='domain'105- `transfer_ownership`: Required when role='owner'106107**Pitfalls**:108- Invalid type/email combinations trigger 4xx errors109- Using `type='anyone'` or powerful roles is risky; get explicit user confirmation110- Org policies may block certain sharing types, causing 403111- Permission changes may take time to propagate112- Use `GMAIL_SEARCH_PEOPLE` to resolve contact names to emails before sharing113114### 4. Create and Organize Folders115116**When to use**: User wants to create folder structures or move files between folders117118**Tool sequence**:1191. `GOOGLEDRIVE_FIND_FILE` - Check if folder already exists [Prerequisite]1202. `GOOGLEDRIVE_CREATE_FOLDER` - Create a new folder [Required]1213. `GOOGLEDRIVE_GET_FILE_METADATA` - Verify created folder [Optional]1224. `GOOGLEDRIVE_MOVE_FILE` - Move files between folders [Optional]1235. `GOOGLEDRIVE_UPDATE_FILE_PUT` - Update file metadata/parents [Alternative]124125**Key parameters**:126- `name`: Folder name127- `parent_id`: Parent folder ID (NOT name); omit for root128- `file_id`: File to move129- `add_parents`: Destination folder ID for move130- `remove_parents`: Source folder ID to remove from131132**Pitfalls**:133- `GOOGLEDRIVE_CREATE_FOLDER` requires `parent_id` as an ID, not a folder name134- Using `parent_id="root"` creates at top level; for nested paths, chain folder IDs135- `GOOGLEDRIVE_FIND_FILE` returns ~100 items/page; follow `nextPageToken` for large drives136- Move operations can leave items with multiple parents; use `remove_parents` for true moves137- Always verify parent folder exists before creating children138139## Common Patterns140141### ID Resolution142- **File/folder name -> ID**: `GOOGLEDRIVE_FIND_FILE` with `q` parameter143- **Root folder**: Use `folder_id='root'` or `'root' in parents`144- **Shared drive -> driveId**: `GOOGLEDRIVE_LIST_SHARED_DRIVES`145- **Contact name -> email**: `GMAIL_SEARCH_PEOPLE` (for sharing)146147### Query Syntax148Google Drive uses a specific query language:149- Name search: `"name contains 'report'"` or `"name = 'exact.pdf'"`150- Type filter: `"mimeType = 'application/pdf'"` or `"mimeType = 'application/vnd.google-apps.folder'"`151- Folder scoping: `"'FOLDER_ID' in parents"`152- Date filter: `"modifiedTime > '2024-01-01T00:00:00'"`153- Combine with `and`/`or`/`not`: `"name contains 'report' and trashed = false"`154- Boolean filters: `"sharedWithMe = true"`, `"starred = true"`, `"trashed = false"`155156### Pagination157- Follow `nextPageToken` until absent for complete results158- Set `pageSize` explicitly (default 100, max 1000)159- De-duplicate results if running multiple searches160161### Export Formats162For Google Workspace files, set `mime_type` to export:163- **Docs**: `application/pdf`, `text/plain`, `text/html`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`164- **Sheets**: `text/csv`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`165- **Slides**: `application/pdf`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`166167## Known Pitfalls168169- **Internal storage required**: Upload requires files in internal S3 storage (s3key)170- **Export vs download**: Set `mime_type` ONLY for Google Workspace files; omit for native files171- **Temporary URLs**: Downloaded content via `s3url` is temporary; fetch promptly172- **Query complexity**: >5-10 OR clauses may error; split complex searches into multiple queries173- **Shared drive scoping**: Missing drive permissions yield empty results; verify access first174- **No wildcards**: Use `contains` operator instead of `*` for partial name matching175- **Folder creation chains**: Always pass folder IDs (not names) as `parent_id`176- **Multiple parents**: Move operations may leave items with multiple parents; use `remove_parents`177- **Rate limits**: Heavy searches/exports can trigger 403/429; implement backoff178179## Quick Reference180181| Task | Tool Slug | Key Params |182|------|-----------|------------|183| Search files | `GOOGLEDRIVE_FIND_FILE` | `q`, `corpora`, `pageSize` |184| List files | `GOOGLEDRIVE_LIST_FILES` | `folderId`, `q`, `orderBy` |185| Upload file | `GOOGLEDRIVE_UPLOAD_FILE` | `file_to_upload`, `folder_to_upload_to` |186| Resumable upload | `GOOGLEDRIVE_RESUMABLE_UPLOAD` | file data |187| Download file | `GOOGLEDRIVE_DOWNLOAD_FILE` | `file_id`, `mime_type` (Workspace only) |188| File metadata | `GOOGLEDRIVE_GET_FILE_METADATA` | `fileId`, `fields` |189| Create folder | `GOOGLEDRIVE_CREATE_FOLDER` | `name`, `parent_id` |190| Move file | `GOOGLEDRIVE_MOVE_FILE` | `file_id`, `add_parents`, `remove_parents` |191| Share file | `GOOGLEDRIVE_ADD_FILE_SHARING_PREFERENCE` | `file_id`, `role`, `type`, `email_address` |192| List permissions | `GOOGLEDRIVE_LIST_PERMISSIONS` | `fileId` |193| Update permission | `GOOGLEDRIVE_UPDATE_PERMISSION` | file_id, permission_id |194| Delete permission | `GOOGLEDRIVE_DELETE_PERMISSION` | file_id, permission_id |195| List shared drives | `GOOGLEDRIVE_LIST_SHARED_DRIVES` | `pageSize` |196| Drive info | `GOOGLEDRIVE_GET_ABOUT` | (none) |197| Create shortcut | `GOOGLEDRIVE_CREATE_SHORTCUT_TO_FILE` | target file_id |198199<!-- Source: .faos/custom/skills/devops/google-drive-automation/SKILL.md -->