Accessing a Google Drive spreadsheet from Appengine

后端 未结 2 1903

I have an appengine app that needs to access a single, hard-coded spreadsheet on Google Drive.

Up until now I have been achieving this as follows:

         


        
2条回答
  •  Happy的楠姐
    2021-01-14 05:08

    Pinoyyid has indeed provided wonderful help. I wanted to follow up with Python code that will allow access to a Personal (web-accessible) Google Drive.

    This runs fine within the Google App Engine (as part of a web app) and also standalone on the desktop (assuming the Google App Engine SDK is installed on your machine [available from: https://developers.google.com/appengine/downloads]).

    In my case I added https://www.googleapis.com/auth/drive scope during Pinyyid's process because I wanted access to all my Google Drive files.

    After following Pinoyyid's instructions to get your refresh token etc., this little Python script will get a listing of all the files on your Google drive:

    import httplib2
    import datetime
    from oauth2client.client import OAuth2Credentials
    from apiclient.discovery import build
    
    API_KEY = 'AIz...'       # from "Key for Server Applications" from "Public API Access" section of Google Developers Console
    access_token = "ya29..." # from Piinoyyid's instructions
    refresh_token = "1/V..." # from Piinoyyid's instructions
    client_id = '654....apps.googleusercontent.com' # from "Client ID for web application" from "OAuth" section of Google Developers Console
    client_secret = '6Cl...' # from "Client ID for web application" from "OAuth" section of Google Developers Console
    token_expiry = datetime.datetime.utcnow() - datetime.timedelta(days=1)
    token_uri = 'https://accounts.google.com/o/oauth2/token'
    user_agent = 'python urllib (I reckon)'
    
    def main():
        service = createDrive()
        dirlist = service.files().list(maxResults=30)
        print 'dirlist', dirlist
        result = dirlist.execute()
        print 'result', result
    
    def createDrive():
        credentials = OAuth2Credentials(access_token, client_id, client_secret, refresh_token, token_expiry, token_uri, user_agent)
        http = httplib2.Http()
        http = credentials.authorize(http)
        return build('drive', 'v2', http=http, developerKey=API_KEY)
    
    main()
    

    I'm grateful to all who have provided the steps along the way to solving this.

提交回复
热议问题