- 0.98
- added gdrm.py, able to remove files and folder.
Google drive command-line tools
Tools to maintain files on Google Drive.
- Download/Upload files to Google Drive
- Upload Apps Script project(GAS)
- Use Google Drive REST API V2
- Check your system has Python installed
- gdcmdtools are developed under Python 2.7.3, I would suggest users to run the tools with Python 2.7.3.(OK: 2.7.2)
- PIP
- For Mac OSX
- sudo easy_install pip
- sudo pip install google-api-python-client
- sudo pip install gdcmdtools
- For Ubuntu Linux
- sudo apt-get install python-pip
- sudo pip install google-api-python-client
- sudo pip install gdcmdtools
- After the installation, you will see gd*.py under /usr/local/bin.
- For Mac OSX
- Ubuntu Linux PPA
- sudo apt-add-repository ppa:ctf/gdcmdtools
- sudo apt-get update
- sudo apt-get install python-gdcmdtools
-
Create a new project for this tool to access your Google drive
- Visit https://console.developers.google.com/ , create project, name it anything you like, ex: gdcmdtools.
-
Enable the following Google APIs in "APIs & auth/APIs"
- Drive API
- Fusion Tables API
-
Make sure your application has an application name in "APIs & auth/Credentials/OAuthConsent screen"
- Find "PRODUCT NAME" field. Make sure it's not blank.
-
Grant access to Google Drive for gdcmdtools in "APIs & auth/Credentials"
- Click "Create new Client ID", APPLICATION TYPE: Installed application, INSTALLED APPLICATION TYPE: Other
- Check the section "Client ID for native application", click at the "Download JSON".
- Execute gdauth.py in a terminal and give the downloaded secret file just downloaded as parameter: $ gdauth.py client_secrets.json
- You will see message like: INFO:gdcmdtools.base:Please visit the URL in your browser: https://accounts.google.com/o/oauth2/auth?scope=....
- Visit the URL with browser and allow the app accessing your Google Drive.
- Copy the code you see in your browser, then back to the terminal, paste the code and hit enter.
- Done, you won't be asked for the code again unless the credential expired.
Use the tool to pass the OAuth2 authentication
usage: gdauth.py [-h] [-r {local,oob}] secret_file
gdauth v0.0.1 - Google Drive OAuth2 authentication tool - gdcmdtools (Google Drive command line tools)
positional arguments:
secret_file the secret file in JSON format, ~/.gdcmdtools.secrets will be overwritten
optional arguments:
-h, --help show this help message and exit
-r {local,oob}, --redirect_uri {local,oob}
specify the redirect URI for the oauth2 flow, could be:
local: means "http://localhost"
oob: (default) means "urn:ietf:wg:oauth:2.0:oob"
% python ./gdauth.py /tmp/client_secrets.json # Use the /tmp/client_secrets.json as secret file
This tool can be used to upload files to Google drive as Spreadsheet,csv,fusion table,doc, etc.
usage: gdput.py [-h] [-s SOURCE_TYPE] [-l TARGET_TITLE]
[-d TARGET_DESCRIPTION] [--no_print_id] [-f FOLDER_ID]
[--debug {debug,info,warning,error,critical}]
[-p TYPE ROLE VALUE] [-t {raw,ft,pt,ss,doc,ocr,dr,gas}]
[--ft_latlng_column FT_LATLNG_COLUMN]
[--ft_location_column FT_LOCATION_COLUMN]
[--csv_column_define define1_define2_defineN...]
source_file
gdput v0.91 - Tool to upload file to Google Drive - gdcmdtools (Google Drive command line tools)
positional arguments:
source_file The file you're going to upload to Google Drive
optional arguments:
-h, --help show this help message and exit
-s SOURCE_TYPE, --source_type SOURCE_TYPE
define the source file type by MIME type,
ex: "text/csv", or "auto" to determine the file type by file name
-l TARGET_TITLE, --target_title TARGET_TITLE
specify the title of the target file
-d TARGET_DESCRIPTION, --target_description TARGET_DESCRIPTION
specify the description of the target file
--no_print_id set if you like not to print the file id after file being uploaded
-f FOLDER_ID, --folder_id FOLDER_ID
the target folder ID on the Google drive
--debug {debug,info,warning,error,critical}
define the debug level
-p TYPE ROLE VALUE, --permission TYPE ROLE VALUE
set the permission of the uploaded file, can be:
type: user, group, domain, anyone
role: owner, reader, writer
value: user or group e-mail address,
or 'me' to refer to the current authorized user
ex: -p anyone reader me # set the uploaded file public-read
-t {raw,ft,pt,ss,doc,ocr,dr,gas}, --target_type {raw,ft,pt,ss,doc,ocr,dr,gas}
define the target file type on Google Drive, can be:
raw: (default) the source file will uploaded without touching
ft: Fusion Table (for .csv)
pt: Presentation (for .ppt, .pps, .pptx)
ss: Spreadsheet (for .xls, .xlsx, .ods, .csv, .tsv, .tab)
doc: Document (for .doc, .docx, .html, .htm, .txt, .rtf)
ocr: OCR (for .jpg, .git, .png, .pdf)
dr: Drawing (for .wmf)
gas: GAS project (for .json)
fusion table support (--target_type ft):
--ft_latlng_column FT_LATLNG_COLUMN
specify the column header for latitude and longitude for the fusion table,
the column will be created automatically
--ft_location_column FT_LOCATION_COLUMN
specify the location column header for the fusion table
--csv_column_define define1_define2_defineN...
define the columns type for each column of the csv file,
can be "string", "number", "datetime", or "location".
ex: has 4 columns in the csv file: "name", "age", "birthday", "address".
you can set --csv_column_define string_number_datetime_location
% python ./gdput.py photo.jpg # upload photo.jpg to gd without changing the format
% python ./gdput.py -t ft samples/sample.csv # upload a csv file to gd as fusion table
% python ./gdput.py -t ss samples/sample.csv # upload a csv file to gd as spreadsheet
% python ./gdput.py -t ft --ft_location_column address --ft_latlng_column latlng samples/sample.csv
# upload a csv to gd as fusion table with geocoding the latitude longitude data according to the address rows
% python ./gdput.py -p anyone reader me samples/sample.csv
# upload a csv file as Spreadsheet and set the file public-read
% python ./gdput.py -t ft --csv_column_define string_string_location_string_string_number samples/sample.csv
# upload a csv file as ft with specifed column type
% python ./gdput.py -t gas gas_project.json
# update gas project with project file 'gas_project.json'
get files from google drive
usage: gdget.py [-h] [-f FORMAT] [-s NEW_FILE_NAME]
[--debug {debug,info,warning,error,critical}]
file_id
gdget v0.91 - Tool to download file from Google Drive - gdcmdtools (Google Drive command line tools)
positional arguments:
file_id The id for the file you're going to download
optional arguments:
-h, --help show this help message and exit
-f FORMAT, --export_format FORMAT
specify the export format for downloading,
google_format: export_format
spreadsheet: pdf, ods, xlsx
drawing: png, pdf, jpeg, svg
document: pdf, docx, rtf, odt, html, txt
script+json: json
presentation: pdf, pptx, txt
-s NEW_FILE_NAME, --save_as NEW_FILE_NAME
save the downloaded file as
--debug {debug,info,warning,error,critical}
define the debug level
% python ./gdget.py FILE_ID --export_format pdf -s /tmp/myfile.pdf # export the file as pdf and save as /tmp/myfile.pdf
% python ./gdget.py FILE_ID -f json # down files associated with GAS project
This tool can be used to set up file's permission
usage: gdperm.py [-h]
[--list | --get PERMISSION_ID | --insert TYPE ROLE VALUE | --delete PERMISSION_ID]
file_id
gdperm v0.0.1 - Tool to change file's permission on Google Drive - gdcmdtools (Google Drive command line tools)
positional arguments:
file_id The id of file you're going to change permission
optional arguments:
-h, --help show this help message and exit
--list list the permission resource of the file
--get PERMISSION_ID get the permission resource by id
--insert TYPE ROLE VALUE
insert the permission to the file by id
--delete PERMISSION_ID
delete the permission of the file by id
% python ./gdperm.py 0B_XXXXXXXXXX --insert anyone reader me # set the file as public-read
% python ./gdperm.py 0B_XXXXXXXXXX --list # list the permissions by file id: 0B_XXXXXXXXXX
% python ./gdperm.py 0B_XXXXXXXXXX --get 5566520 # get the permissions by permission id: 5566520
% python ./gdperm.py 0B_XXXXXXXXXX --delete 5566520 # delete the permissions by permission id: 5566520
- ubuntu PPA: https://launchpad.net/~ctf/+archive/gdcmdtools
BSD 2-Clause License
Please report bugs via https://github.com/tienfuc/gdcmdtools/issues
Tien Fu Chen
Email: tienfu.c @ gmail.com