从Google云端硬盘导出text / plain

时间:2016-11-27 20:31:41

标签: python google-drive-api

我正在尝试将Google文档导出为文本。我尝试了两种方法,都没有工作。

导出内容,我将内容作为字节对象获取,我无法将其转换为简单的字符串:

req = service.files().export_media(fileId=file_id,mimeType='text/plain')
fh = io.BytesIO()
download = MediaIoBaseDownload(fh, req)
done = False
while done is False:
    status, done = download.next_chunk()
return fh.getvalue()

然后我得到了编解码器错误的变种

  

return codecs.charmap_encode(input,self.errors,encoding_map)[0]   UnicodeEncodeError:'charmap'编解码器无法对位置0中的字符'\ ufeff'进行编码:字符映射到< undefined>

或者这些:

  

TypeError:write()参数必须是str,而不是bytes

所以这是一个类型转换问题,我想,如果我能解决它的问题。

但是,我更愿意只使用exportLinks属性将文件下载为text / plain。问题是,这根本就是缺失:

file = service.files().get(fileId=id).execute()
pprint.pprint(file)
  

{'id':'xxxxxxxxxx',

     

'kind':'drive#file',

     

'mimeType':'application / vnd.google-apps.document',

     

'name':'export'}

不出所料,

file ['exportLinks']给出了一个KeyError:

  

KeyError:'exportLinks'

我放宽了范围,所以它现在是'https://www.googleapis.com/auth/drive',所以这不应该是问题。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

Drive platform允许开发人员打开,导入和导出原生Google文档类型,例如Google电子表格,演示文稿,文档和绘图。例如,如果您的应用程序配置为打开PDF文件,那么由于Google文档可导出为PDF,因此用户可以使用您的应用程序打开这些文档。

该应用可以使用files.export方法下载转换后的文件内容。

file_id = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo'
request = drive_service.files().export_media(fileId=file_id,
                                             mimeType='application/pdf')
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print "Download %d%%." % int(status.progress() * 100)