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.