更新(2019 年 3 月)好消息!Google Docs REST API现在可用。有关它的更多信息,请参阅我对类似问题的 SO 回答,但为了让您继续前进,这里是官方 Python“快速入门”示例,向您展示如何以纯文本形式获取 Google Doc 的标题。
下面最初回答的 Apps Script 和 Drive REST API 解决方案仍然有效,并且是获取 Google Doc 内容的替代方法。(Drive API 适用于 Python 2 和 3,但 Apps 脚本仅适用于 JavaScript。)
底线:如果您想以纯文本格式下载整个文档,最好使用 Drive API 解决方案。如果您想以编程方式对 Doc 的不同部分进行 CRUD,则必须使用 Docs API 或 Apps 脚本。
(2017 年 2 月) OP 中的代码和唯一的其他答案现在都已过时,因为ClientLogin 身份验证在 2012 年已被弃用(!),而GData API是上一代 Google API。虽然并非所有 GData API 都已弃用,但所有较新的Google API都不使用Google Data 协议。
虽然Google Apps Script提供了“类似 API”的服务,但 Google Docs 文档没有可用的 REST API,这是一种云中的 JavaScript 解决方案,提供对 Google Docs 的编程访问(通过其DocumentService对象),包括Docs 附加组件。
要从 Google Doc 读取纯文本,考虑文件级访问,您将使用Google Drive API代替。使用 Drive API 的示例:
- 将 Google 表格导出为 CSV(博客文章)
- “穷人的纯文本到 PDF”转换器(博客文章)(*)
(*) - TL;DR:将纯文本文件上传到云端硬盘,导入/转换为 Google Docs 格式,然后将该 Doc 导出为 PDF。上面的帖子使用 Drive API v2;这篇后续帖子描述了将其迁移到 Drive API v3,这是一个结合了“穷人转换器”帖子的开发者视频。
OP 的解决方案是执行与您在上面两篇文章中看到的类似的操作,但请确保您使用的是text/plain
导出 MIMEtype。对于 Drive 的其他导入/导出格式,请参阅此相关问题 SO answer以及从 Drive docs page 下载文件。下面是一些伪代码,它在我的 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
如果您需要更多,请观看这些视频,了解如何使用 Google API 进行设置、OAuth2 授权以及创建 Drive 服务端点以列出您的 Drive 文件,以及所有这三个的相应博客文章。
要了解有关如何在 Python 中使用 Google API 的更多信息,请查看我的博客以及我正在制作的各种 Google 开发人员视频(系列 1和系列 2 )。