A Python script to download all files from your Google Drive to a local directory, skipping Google Docs formats.
- Downloads all non-Google Docs files from your Google Drive
- Progress bar using
tqdm
- Detailed logging
- Command-line arguments for configuration
- Automatic token management
- Error handling for robust operation
- Python 3.6+
- Google Cloud Console project with Drive API enabled
- OAuth 2.0 credentials file
- Clone the repository:
git clone https://github.com/alexk136/google-drive-downloader
cd google-drive-downloader
- Install dependencies:
pip install -r requirements.txt
- Set up Google Drive API:
- Create a project in Google Cloud Console
- Enable the Google Drive API
- Create OAuth 2.0 credentials
- Download the credentials JSON file and save as
credentials.json
To authorize access to your Google Drive or Google Photos, you need to create OAuth 2.0 credentials:
-
Go to Google Cloud Console
-
Click "Create Project" (if you don’t have one yet)
-
Navigate to APIs & Services → Library
- Search for and enable Google Drive API or Google Photos Library API, depending on your use case
-
Go to APIs & Services → Credentials
-
Click "+ Create Credentials" → OAuth client ID
-
If prompted to configure the OAuth consent screen:
- Select External
- Set an App name (e.g.,
DriveDownloader
) - Save and continue — no need to publish
-
Back on the Create OAuth client ID screen:
- Choose Desktop App
- Name it (e.g.,
MyDownloaderApp
) - Click "Create", then "Download JSON"
-
Rename the downloaded file to
credentials.json
and place it in your script directory.
⚠️ This file contains sensitive credentials — keep it private and secure.
Basic usage:
python download_drive.py
With custom options:
python download_drive.py --save-dir my_downloads --credentials my_credentials.json --token my_token.pkl --page-size 500
Options:
--save-dir
: Directory to save downloaded files (default: drive_download)--credentials
: Path to Google API credentials file (default: credentials.json)--token
: Path to token file (default: token.pkl)--page-size
: Number of files to fetch per API call (default: 1000)
- Run the script
- Browser will open for authentication
- Grant necessary permissions
- Token will be saved for future runs
- Google Docs, Sheets, and Slides are skipped as they require export
- Files are saved with their original names
- Existing files with same names will be overwritten
- Ensure sufficient disk space
MIT License - see LICENSE file for details
Pull requests are welcome! Please open an issue first to discuss proposed changes.