Library and cli to manage and interact with your Google Drive, sheets and docs
- Introduction
- Obtaining credentials for Google APIs
- Installing google-drive CLI
- CLI Documentation
- Contributing
- License
Just access to Google APIs.
- Or click here for a quick project creation.
Once you have created your project, you can create your project's credentials.
To manage project's credentials you have the section api/credentials within Google APIs. But if this is your first credentials creation you better follow these steps:
- First, you have to create the consent for your project
- Once the consent is already created and you have a name for you google app you can create your credentials:
- Go to + Create Credentials and select OAuth ID client
- Or access to api/credentials/oauthclient
- The OAuth client type is other and choose the name you prefer 😃
You have already created your credentials! 🎆
Just place them in a credentials.json
file in the root of this repository. ❗❗
You can see where you have to access for each google api in the doc google apis usage
To authenticate us we have to send a token.pickle to Google APIs, this token.pickle is generated using the file credentials.json.
To generate this we have the make target google-auth, so, you just have to tun
make google-auth
👼 So, you don't have to worry about that 😃
make install
pip install google-drive
Look for available versions with:
pip install google-drive==
And select one and run:
pip install google-drive==<VERSION>
Shows the help message
> google-drive --help
Usage: google-drive [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
get Get file metadata
get-mimetypes Get Mimetypes availables in this API implementation
login Perform a login with google oauth
ls List directory contents
mkdir Make directory
Get Mimetypes availables in this API implementation
> google-drive get-mimetypes credentials.json
- application/vnd.google-apps.folder
- application/vnd.google-apps.document
- application/vnd.google-apps.spreadsheet
- application/pdf
Perform a login with google oauth.
> google-drive login <path-to-credentials-file.json>
List directory contents
> google-drive ls <directory>/<maybe-some-subdir> <path-to-credentials-file.json>
- (<GOOGLE_DOC_ID_1>, <FILENAME_1>, <FILE_MIMETYPE_1>)
- (<GOOGLE_DOC_ID_2>, <FILENAME_2>, <FILE_MIMETYPE_2>)
- (<GOOGLE_DOC_ID_3>, <FILENAME_3>, <FILE_MIMETYPE_3>)
...
- (<GOOGLE_DOC_ID_N>, <FILENAME_N>, <FILE_MIMETYPE_N>)
Get file metadata
> google-drive get <GOOGLE_DOC_ID> <path-to-credentials-file.json>
File Metadata:
==
id: <GOOGLE_DOC_ID>
name: <FILENAME>
parents: ['<GOOGLE_DOC__PARENT_ID>']
mime_type: <FILE_MIMETYPE>
export_links:
- application/rtf: https://docs.google.com/feeds/download/documents/export/Export?id=<GOOGLE_DOC_ID>&exportFormat=rtf
- application/vnd.oasis.opendocument.text: https://docs.google.com/feeds/download/documents/export/Export?id=<GOOGLE_DOC_ID>&exportFormat=odt
- text/html: https://docs.google.com/feeds/download/documents/export/Export?id=<GOOGLE_DOC_ID>&exportFormat=html
- application/pdf: https://docs.google.com/feeds/download/documents/export/Export?id=<GOOGLE_DOC_ID>&exportFormat=pdf
- application/epub+zip: https://docs.google.com/feeds/download/documents/export/Export?id=<GOOGLE_DOC_ID>&exportFormat=epub
- application/zip: https://docs.google.com/feeds/download/documents/export/Export?id=<GOOGLE_DOC_ID>&exportFormat=zip
- application/vnd.openxmlformats-officedocument.wordprocessingml.document: https://docs.google.com/feeds/download/documents/export/Export?id=<GOOGLE_DOC_ID>&exportFormat=docx
- text/plain: https://docs.google.com/feeds/download/documents/export/Export?id=<GOOGLE_DOC_ID>&exportFormat=txt
Make directory
> google-drive mkdir <DIR_NAME> <path-to-credentials-file.json>
(<GOOGLE_DOC_ID>, <DIR_NAME>, application/vnd.google-apps.folder)
Create empty file of specified mimetype
> google-drive touch <EXISTING_DIR>/<FILENAME> <SOME_MYMETYPE> <path-to-credentials-file.json>
(<GOOGLE_DOC_ID>, <FILENAME>, <SOME_MYMETYPE>)
It could raise MissingGoogleDriveFolderException
when parent directories do not exist.
Contributions are welcome! Please see our Contributing Guide and Style Guide for more details.
You can visit our TODO list :)
This project is licensed under the Apache license.