use*_*358 7 python download google-docs google-docs-api
我试图从 Python 脚本中读取 Google Doc(只是一个普通文档,而不是电子表格或演示文稿)的原始文本/内容,但到目前为止收效甚微。
这是我尝试过的:
import gdata.docs.service
client = gdata.docs.service.DocsService()
client.ClientLogin('email', 'password')
q = gdata.docs.service.DocumentQuery()
q.AddNamedFolder('email', 'Folder Name')
feed = client.Query(q.ToUri())
doc = feed.entry[0] # extract one of the documents
Run Code Online (Sandbox Code Playgroud)
然而,这个变量 doc,它的类型是 gdata.docs.DocumentListEntry,似乎不包含任何内容,只是关于文档的元信息。
我在这里做错了吗?有人可以指出我正确的方向吗?谢谢!
更新(2019 年 3 月)好消息!Google Docs REST API现已推出。有关它的更多信息来自我对类似问题的回答,但为了让您继续下去,这里有官方的 Python“快速入门”示例,向您展示如何以纯文本形式获取 Google 文档的标题。
下面最初回答的 Apps 脚本和 Drive REST API 解决方案仍然有效,并且是获取 Google 文档内容的替代方法。(Drive API 可在 Python 2 和 3 上运行,但 Apps 脚本仅支持 JavaScript。)
底线:如果您想以纯文本形式下载整个文档,Drive API 解决方案是最好的。如果您想以编程方式 CRUD 文档的不同部分,则必须使用 Docs API 或 Apps 脚本。
(2017 年 2 月) OP 中的代码和唯一的其他答案现在都已过时,因为ClientLogin 身份验证早在 2012 年就已被弃用(!),并且GData API是上一代 Google API。虽然并非所有 GData API 均已弃用,但所有较新的Google API均不使用Google 数据协议。
尽管Google Apps Script提供了“类似 API”的服务,但目前还没有可用于 Google Docs 文档的 REST API ,这是一种云中的 JavaScript 解决方案,可提供对 Google Docs 的编程访问(通过其DocumentService对象),包括Docs 附加组件。
要从 Google 文档读取纯文本(被视为文件级访问),您可以使用Google Drive API。使用 Drive API 的示例:
(*) - TL;DR:将纯文本文件上传到云端硬盘,导入/转换为 Google 文档格式,然后将该文档导出为 PDF。上面的帖子使用 Drive API v2;这篇后续文章描述了将其迁移到 Drive API v3,这里有一个开发人员视频,结合了“穷人的转换器”帖子。
OP 的解决方案是执行与您在上面两篇文章中看到的类似操作,但确保您使用的是text/plain导出 MIME 类型。有关 Drive 的其他导入/导出格式,请参阅此相关问题 SO 答案以及从 Drive 文档页面下载文件。以下是一些伪代码,用于在我的云端硬盘文件夹中搜索名为“Hello World”的 Google Docs 文档,并显示在屏幕上找到的第一个匹配文件的内容(假设DRIVE是您的 API 服务端点):
from __future__ import print_function
NAME = 'Hello World'
MIME = 'text/plain'
# using Drive API v3; if using v2, change 'pageSize' to 'maxResults',
# 'name=' to 'title=', and ".get('files')" to ".get('items')"
res = DRIVE.files().list(q="name='%s'" % NAME, pageSize=1).execute().get('files')
if res:
fileID = res[0]['id'] # 1st matching "Hello World" name
res = DRIVE.files().export(fileId=fileID, mimeType=MIME).execute()
if res:
print(res.decode('utf-8')) # decode bytes for Py3; NOP for Py2
Run Code Online (Sandbox Code Playgroud)
如果您需要更多内容,请观看这些视频,了解如何使用 Google API、OAuth2 授权进行设置以及创建 Drive 服务端点来列出您的 Drive 文件,以及这三个内容的相应博客文章。
要了解有关如何将 Google API 与 Python 结合使用的更多信息,请查看我的博客以及我正在制作的各种 Google 开发人员视频(系列 1和系列 2 )。
ADocumentQuery不会将所有文档及其内容\xe2\x80\x94 返回给您,这将花费很长时间。它只是返回一个文档列表,以及每个文档的元数据。(实际上,IIRC你可以通过这种方式获得预览页面,所以如果你的文档只有一页可能就足够了\xe2\x80\xa6)
然后,您需要在单独的请求中下载内容。该content元素具有 a type(MIME 类型)和 a src(实际数据的 URL)。您只需下载它src并解析它即可。但是,您可以通过添加参数来覆盖默认类型exportFormat,因此不需要进行任何解析。
请参阅文档中的下载文档和文件部分,其中有一个示例显示如何下载文档并指定格式。(它是用 .NET 而不是 Python 编写的,并且使用 HTML 而不是纯文本,但您应该能够弄清楚。)
\n| 归档时间: |
|
| 查看次数: |
7421 次 |
| 最近记录: |