Add google-drive-upload extension
Description
Google Drive Upload Upload files and folders to Google Drive directly from Finder with multi-account support.
Key Features 📤 Upload files/folders from Finder selection 👥 Multiple Google account support 📁 Preserve folder structure 🔄 Automatic token refresh ⚙️ Optional custom OAuth Client ID
Technical Details
- Uses OAuth 2.0 with PKCE (no client secret required)
- Works out-of-the-box with included OAuth credentials
- Users can optionally configure their own OAuth Client ID in settings
- All API calls go directly to Google
- Only accesses files created by this extension
Testing ✅ Tested with single/multiple accounts ✅ File and folder uploads working ✅ Token refresh working ✅ All builds and lints passing
Ready for review! 🚀
Screencast
Checklist
- [x] I read the extension guidelines
- [x] I read the documentation about publishing
- [x] I ran
npm run buildand tested this distribution build in Raycast - [x] I checked that files in the
assetsfolder are used by the extension itself - [x] I checked that assets used by the
READMEare placed outside of themetadatafolder
Congratulations on your new Raycast extension! :rocket:
You can expect an initial review within five business days.
Once the PR is approved and merged, the extension will be available on our Store.
Greptile Overview
Greptile Summary
New Raycast extension for uploading files and folders to Google Drive from Finder selection with multi-account OAuth support.
- Implements OAuth 2.0 with PKCE for secure authentication without client secrets
- Supports multiple Google accounts with default account selection
- Preserves folder structure during batch uploads
- Includes proper loading states and error handling throughout
- Found one query injection issue in folder name handling that could cause failures with special characters
Confidence Score: 4/5
- This PR is safe to merge with one minor fix needed for folder name escaping
- Well-structured new extension with proper OAuth implementation, loading states, and error handling. One logic issue found with unescaped folder names in API queries that could cause failures for folders with single quotes.
extensions/google-drive-upload/src/lib/google-drive.ts- query string escaping issue on line 178
Important Files Changed
File Analysis
| Filename | Score | Overview |
|---|---|---|
| extensions/google-drive-upload/package.json | 5/5 | Well-structured package.json with proper dependencies. Two view commands are present with appropriate metadata. |
| extensions/google-drive-upload/src/upload-file.tsx | 4/5 | Main upload command with proper loading states and error handling. Uses isLoading correctly to avoid flicker. |
| extensions/google-drive-upload/src/manage-accounts.tsx | 4/5 | Account management view with proper loading states. Unused React import is a minor style issue. |
| extensions/google-drive-upload/src/lib/auth.ts | 5/5 | OAuth implementation using PKCE with proper token refresh handling and account storage. |
| extensions/google-drive-upload/src/lib/google-drive.ts | 3/5 | Google Drive API wrapper with upload and folder operations. Contains query string injection issue with folder names containing single quotes. |
@pernielsentikaer Hey, It is not possible to get a verified app from Google. . However, users can use their own credentials, like in the extensions imessage-2fa or google-tasks
You might be able to use credentials from this one: https://www.raycast.com/raycast/google-workspace
Not sure if it will work?
@pernielsentikaer Unfortunately, the issue lies not with the credentials but with the scope. This extension requires https://www.googleapis.com/auth/drive.file and https://www.googleapis.com/auth/drive.metadata.readonly. Perhaps after the official extension release, I can send the extension URL to Google and request approval.
This pull request has been automatically marked as stale because it did not have any recent activity.
It will be closed if no further activity occurs in the next 7 days to keep our backlog clean 😊
@raycastbot Waiting for review and merge
This pull request has been automatically marked as stale because it did not have any recent activity.
It will be closed if no further activity occurs in the next 7 days to keep our backlog clean 😊
@mathieudutour