我正在尝试将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',所以这不应该是问题。
我错过了什么?
答案 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)