Google Drive
Upload files, create folders, list and search Google Drive via CLI.
When to use
- Upload proposals, invoices, contracts to client folders
- Create new client folder structure
- List or search files in Drive
- Any Google Drive file management task
Dependencies
- Other skills:
google-auth (if token expired)
- External: Python 3,
google-api-python-client, google-auth
Paths
| What |
Path |
| Script |
$GOOGLE_TOOLS_PATH/drive_manager.py |
| Token |
$GOOGLE_TOOLS_PATH/token.json |
| Credentials |
$GOOGLE_TOOLS_PATH/credentials.json |
| Venv Python |
$GOOGLE_TOOLS_PATH/.venv/bin/python3 |
Known Folder IDs
| Folder |
ID |
| Root (WeLabelData) |
<YOUR_DRIVE_ROOT_ID> |
| Clients |
<YOUR_CLIENTS_FOLDER_ID> |
| Templates |
<YOUR_TEMPLATES_FOLDER_ID> |
How to execute
List folder contents
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py list FOLDER_ID
Create a folder
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py create-folder "Folder Name" --parent FOLDER_ID
Upload a file
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py upload /path/to/file.pdf --folder FOLDER_ID
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py upload /path/to/file.pdf --folder FOLDER_ID --name "Custom Name.pdf"
Search by name
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py search "query"
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py search "query" --folder FOLDER_ID
Share file/folder
cd $GOOGLE_TOOLS_PATH && ./.venv/bin/python3 drive_manager.py share FILE_ID --email user@example.com --role writer
cd $GOOGLE_TOOLS_PATH && ./.venv/bin/python3 drive_manager.py share FILE_ID --email user@example.com --role reader --notify --message "Please review"
Check permissions
cd $GOOGLE_TOOLS_PATH && ./.venv/bin/python3 drive_manager.py permissions FILE_ID
Create Google Doc
cd $GOOGLE_TOOLS_PATH && ./.venv/bin/python3 drive_manager.py create-doc "Title" --folder FOLDER_ID
cd $GOOGLE_TOOLS_PATH && ./.venv/bin/python3 drive_manager.py create-doc "Title" --folder FOLDER_ID --html /path/to/content.html
File info (modified time, last editor)
cd $GOOGLE_TOOLS_PATH && ./.venv/bin/python3 drive_manager.py info FILE_ID
Parameters
| Parameter |
Description |
Default |
folder_id |
Folder ID for list command |
required |
--parent |
Parent folder ID for create-folder |
root |
--folder |
Target folder ID for upload / search / create-doc |
none |
--name |
Custom filename for upload |
original filename |
--email |
Email to share with (share command) |
required |
--role |
Permission role: reader, writer, commenter |
writer |
--notify |
Send email notification when sharing |
false |
--message |
Custom notification message |
none |
--html |
Path to HTML file for doc content (create-doc) |
empty doc |
Examples
List all client folders
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py list <YOUR_CLIENTS_FOLDER_ID>
Create a new client folder
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py create-folder "Acme Corp" --parent <YOUR_CLIENTS_FOLDER_ID>
Upload invoice to client folder
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py upload ~/invoices/inv-100.pdf --folder CLIENT_FOLDER_ID --name "Invoice #100.pdf"
Search for proposals
cd $GOOGLE_TOOLS_PATH && python3 drive_manager.py search "proposal" --folder <YOUR_CLIENTS_FOLDER_ID>
Output Format
All commands output JSON array. Each entry has:
id — Google Drive file ID
name — file/folder name
mimeType — MIME type (application/vnd.google-apps.folder for folders)
webViewLink — direct link to open in browser
Limitations
- Scopes: uses
drive.readonly (list/search) + drive.file (create/upload/share). Cannot modify files not created by this app.
- Upload: single file at a time. For bulk uploads, loop in bash.
- Search: name-based only. Use Google Drive web UI for full-text content search.
- Sharing: can only share files created by this app (drive.file scope). Cannot share files created elsewhere.
- Create-doc: uses Drive API upload with HTML conversion (no Docs API needed). Formatting via HTML.
Troubleshooting
| Problem |
Solution |
token.json expired |
Run google-auth skill to refresh |
| 403 insufficient permissions |
Check scopes in google_scopes.py, may need to re-auth |
| File not found on upload |
Use absolute path or ~ expansion |
| Empty list result |
Verify folder ID is correct, check trashed status |
Related skills
google-auth — OAuth token management
invoice-generator-agent — generates invoices that can be uploaded here