title: Get createdDate from Google Drive Python API for downloads
body: <p>I want to create a Python script to backup Google Drive files as a bit of fun / learning, but I am stuck. My script below did work, but it just made the last modified date and created date of all the files on my local drive on back up as the date they were backed up, and didn't preserve the original created date / modified date as they were on Google Drive. </p>
  
  <p>Here is my script:</p>
  
  <pre><code>from __future__ import print_function
  import sys, httplib2, os, datetime, io
  from time import gmtime, strftime
  from apiclient import discovery
  import oauth2client
  from oauth2client import client
  from oauth2client import tools
  from datetime import date
  
  #########################################################################
  # Fixing OSX el capitan bug -&gt;AttributeError: 'Module_six_moves_urllib_parse' object has no attribute 'urlencode'
  os.environ["PYTHONPATH"] = "/Library/Python/2.7/site-packages"
  #########################################################################
  
  CLIENT_SECRET_FILE = 'client_secrets.json'
  TOKEN_FILE="drive_api_token.json"
  SCOPES = 'https://www.googleapis.com/auth/drive'
  APPLICATION_NAME = 'Drive File API - Python'
  OUTPUT_DIR=str(date.today())+"_drive_backup"
  
  try:
      import argparse
      flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
  except ImportError:
      flags = None
  
  def get_credentials():
      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, TOKEN_FILE)
      store = oauth2client.file.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 prepDest():
      if not os.path.exists(OUTPUT_DIR):
          os.makedirs(OUTPUT_DIR)
          return True
      return False
  
  def downloadFile(file_name, file_id, file_createdDate, mimeType, service):
      request = service.files().get_media(fileId=file_id)
      if "application/vnd.google-apps" in mimeType:
          if "document" in mimeType:
              request = service.files().export_media(fileId=file_id, mimeType='application/vnd.openxmlformats-officedocument.wordprocessingml.document')
              file_name = file_name + ".docx"
          else: 
              request = service.files().export_media(fileId=file_id, mimeType='application/pdf')
              file_name = file_name + ".pdf"
      print("Downloading -- " + file_name)
      response = request.execute()
      with open(os.path.join(OUTPUT_DIR, file_name), "wb") as wer:
          wer.write(response)
  
  def listFiles(service):
      def getPage(pageTok):
          return service.files().list(q="mimeType != 'application/vnd.google-apps.folder'",
                 pageSize=1000, pageToken=pageTok, fields="nextPageToken,files(id,name, createdDate, mimeType)").execute()
      pT = ''; files=[]
      while pT is not None:
          results = getPage(pT)
          pT = results.get('nextPageToken')
          files = files + results.get('files', [])
      return files
  
  def main():
          credentials = get_credentials()
          http = credentials.authorize(httplib2.Http())
          service = discovery.build('drive', 'v3', http=http)
          for item in listFiles(service):
              downloadFile(item.get('name'), item.get('id'), item.get('createdDate'), item.get('mimeType'), service)
  
  if __name__ == '__main__':
      main()
  </code></pre>
  
  <p>To try and get the created date, you can see in the above script I added in <code>createdDate</code>, which looks like some of the metadata I can grab from the file:
  <a href="https://developers.google.com/drive/v2/reference/files" rel="nofollow noreferrer">https://developers.google.com/drive/v2/reference/files</a></p>
  
  <p>But I  don't know if I am grabbing that metadata correctly, and if so, how I actually assign it to my downloaded file.</p>
  
  <p>EDIT: Really sorry but I didn't specify an OS - this is for a mac.</p>