2

関数にクエリを渡す必要があります。それは本当に簡単なはずです!コードは次のとおりです。

def get_file_ID(q):
  dump = drive_service.files().list(q=q, fields = 'items(mimeType,id,title,downloadUrl)').execute()
  fileItems = dump['items']
  for item in fileItems:
    try:
        if item['mimeType'] == "application/octet-stream":
          return item['id']
    except KeyError:
        print "No item of the required type, or item has been deleted"
        return None

def lets_go_get(file_Id):
  f = drive_service.files().get(fileId=file_Id).execute()
  resp, content = drive_service._http.request(f.get('id'))
  if resp.status == 200:
      #print 'Status: %s' % resp
      return content
  else:
      print 'An error occurred: %s' % resp
      return None

text = raw_input('Enter title search text: ')
query = "title contains '" + text +"'"
selectedFile = "'" + get_file_ID(query) +"'"

print lets_go_get(selectedFile)

次のエラーが表示されます。

   HttpError: <HttpError 404 when requesting https://www.googleapis.com/drive/v2/files/%270BxDfMkL6x0wjMS03Nz.....Tk%27?alt=json returned "File not found: '0BxDfMkL6x0wjMS03.....MTU5NjQ0ZjdhOTk'">

しかし、「lets_go_get」への最後の呼び出しを次のような直接のファイルIDに置き換えると:

print lets_go_get('0BxDfMkL6x0wjMS03.....MTU5NjQ0ZjdhOTk')

それは動作します。

両者の間に違いは見られません。誰かが私が欠けているものを説明できますか???

どうもありがとう。

4

1 に答える 1

2

downloadUrlコンテンツのダウンロードに使用します。

f = drive_service.files().get(fileId=file_Id).execute()
resp, content = drive_service._http.request(f.get('downloadUrl'))

ドキュメントの「Python」タブに実用的なサンプルがあります: https://developers.google.com/drive/v2/reference/files/get

于 2013-04-19T11:54:34.877 に答える