Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import print_function
- from io import BytesIO, FileIO
- import httplib2
- import os
- from apiclient import discovery
- from googleapiclient.http import MediaIoBaseDownload
- from oauth2client import client
- from oauth2client import tools
- from oauth2client.file import Storage
- try:
- import argparse
- flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
- except ImportError:
- flags = None
- # If modifying these scopes, delete your previously saved credentials
- # at ~/.credentials/drive-python-quickstart.json
- SCOPES = 'https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.readonly'
- CLIENT_SECRET_FILE = 'client_secret.json'
- APPLICATION_NAME = 'Drive API Python Quickstart'
- def get_credentials():
- """Gets valid user credentials from storage.
- If nothing has been stored, or if the stored credentials are invalid,
- the OAuth2 flow is completed to obtain the new credentials.
- Returns:
- Credentials, the obtained credential.
- """
- home_dir = os.path.expanduser('~')
- credential_dir = os.path.join(home_dir, '.credentials')
- if not os.path.exists(credential_dir):
- os.makedirs(credential_dir)
- credential_path = os.path.join(credential_dir,
- 'drive-python-quickstart.json')
- store = Storage(credential_path)
- credentials = store.get()
- if not credentials or credentials.invalid:
- flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
- flow.user_agent = APPLICATION_NAME
- if flags:
- credentials = tools.run_flow(flow, store, flags)
- else: # Needed only for compatibility with Python 2.6
- credentials = tools.run(flow, store)
- print('Storing credentials to ' + credential_path)
- return credentials
- def main():
- """Shows basic usage of the Google Drive API.
- Creates a Google Drive API service object and outputs the names and IDs
- for up to 10 files.
- """
- credentials = get_credentials()
- http = credentials.authorize(httplib2.Http())
- service = discovery.build('drive', 'v3', http=http)
- file_id = '123456abcde'
- request = service.files().export_media(fileId=file_id, mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
- fh = FileIO('data.xls', 'wb')
- downloader = MediaIoBaseDownload(fh, request)
- done = False
- while done is False:
- status, done = downloader.next_chunk()
- print("Download %d%%." % int(status.progress() * 100))
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement