Google Drive API - KeyError - отсутствует информация URL - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь получить URL ссылки на файл, используя "get".Веб-версия API возвращает все атрибуты или «ключи».Однако, когда я пытаюсь получить к нему доступ через код Python, он возвращает только ограниченное количество ключей, таких как «mimetype», но без информации URL.Я думаю, что соответствующие "Области" включены, и файл авторизации "token.json" является текущим, но код выдает "keyError", когда выполняется запрос к целевому файлу.Ниже приведен ответ при запуске кода.Он находит файл, но сообщается только об ограниченном количестве ключей следующим образом:

{u'mimeType': u'image/gif', u'kind': u'drive#file', u'id': u'0B3rj986AqarFMHBWNng1T043WkE', u'name': u'sketchImage.gif'}

Traceback (most recent call last):
  File "C:/Python27/stackQuestion.py", line 35, in <module>
    main()
  File "C:/Python27/stackQuestion.py", line 33, in main
    print(myFile['alternateLink'])
KeyError: 'alternateLink'

Код

from __future__ import print_function
import datetime
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools


SCOPES = [
    'https://www.googleapis.com/auth/drive',
    'https://www.googleapis.com/auth/drive.appdata',
    'https://www.googleapis.com/auth/drive.file',
    'https://www.googleapis.com/auth/drive.metadata',
    'https://www.googleapis.com/auth/drive.metadata.readonly',
    'https://www.googleapis.com/auth/drive.photos.readonly',
    'https://www.googleapis.com/auth/drive.readonly'
    ]

def main():

    store = file.Storage('token.json')
    creds = store.get()
    if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
        creds = tools.run_flow(flow, store)
    # Build Drive Service Instances
    serviceF = build('drive', 'v3', http=creds.authorize(Http()))

    #Locate the file by "fileID"
    myFile= serviceF.files().get(fileId=u'0B3rj986AqarFMHBWNng1T043WkE').execute()
    print(myFile)
    print(myFile['alternateLink'])  # <===== My Difficulty
if __name__ == '__main__':
    main()
...