Google Documents List API的文档似乎说您可以创建本地文档并上传。有没有办法通过 API在Google Docs 上实际创建和编辑文档?
4 回答
虽然文档称其为“上传”,但一切都归结为发送适当格式的HTTP POST
请求,因此当然它实际上可以是一个新的创建,而不是对其他现有文件的实际“上传”。(通过POST
请求创建类似于通常描述为 a 的内容REST API
,尽管实际上REST
您通常会使用PUT
请求而不是当然)。
您只需要以此处列出的任何格式创建一个代表您的文档的数据块- 根据您的编程语言,最简单的可能是text/csv
电子表格和application/rtf
文本文档 - 然后放入适当格式的POST
数据。例如,要以最简单的方式(无元数据)制作电子表格,您可以POST
:
POST /feeds/default/private/full HTTP/1.1
Host: docs.google.com
GData-Version: 3.0
Authorization: <your authorization header here>
Content-Length: 81047
Content-Type: text/csv
Slug: Example Spreadsheet
ColumnA, ColumnB
23, 45
提供专用 API 的每种特定编程语言都可以为这项不那么难的任务提供帮助;例如,在 Python 中,根据docs,API 建议ETags
在多个客户端同时“上传”(即创建或更新文档)时避免覆盖更改。但是直接准备 POST 总是可能的,因为几乎 REST API 被记录为所有特定语言 API的底层协议。
亚历克斯的回答无疑是正确的,但它引出了一个问题:“我如何通过 Google Docs API 做到这一点?”
这是一种方法(在 Python 中,因为我就是那种人):
import gdata.docs.service
import StringIO
client = gdata.docs.service.DocsService()
client.ClientLogin(username, password,
source='Spreadsheet Creation Example')
content = 'COL_A, COL_B, COL_C, COL_D\ndata1, data2, data3, data4'
ms = gdata.MediaSource(file_handle=StringIO.StringIO(content),
content_type='text/csv',
content_length=len(content))
entry = client.Upload(ms, 'Test Spreadsheet')
这是我在http://code.google.com/p/gdata-python-client/source/browse/tests/gdata_tests/docs/service_test.py中找到的一个小混搭技术,我又通过这个找到了来自 Google Group 的 GData Docs API帖子。
关键的见解(无论如何对我来说)是:
- 意识到 MediaSource 构造函数的形式参数“file_handle”将采用任何类似文件的对象,并且
- 发现(正如 OP 对 Google Group 帖子的跟进所提到的)单元测试是示例的重要来源
(我无法找到 Alex 的文档链接引用的 Python 特定开发人员指南——可能它已经丢失或被 Google 将文档资产从 code.google.com 转移到 developers.google.com 中。Alex 的链接现在重定向到更通用的文档,该文档主要显示 .NET 和 Java 示例,但只有一点 Python。)
自 2019 年 2 月 4 日起,Google 文档现在有一个 REST API。
(2019 年 9 月)以编程方式在 Google Docs 中创建文档的方法有 3 种:
- Google Docs REST API(低级;Python、JS/Node.js、Java、C#/.NET、PHP、Ruby、Go 等)
- Google Apps 脚本(高级;仅限 JavaScript)
- Google Drive API(像上面的 Docs API 一样低级;上面的两种选择都可以创建或编辑文档,但这个是只创建或删除加上编辑共享/权限)
Docs API 于2019 年 2 月正式推出。我制作了一个高级视频概述,介绍了使用该 API 的邮件合并应用程序的外观。(这不是完整的G Suite Dev Show插曲,但确实链接到工作示例。)查看有关使用 API 的各种指南,包括各种编程语言的快速入门示例。
OTOH,Apps Script 是一种更简单、更高级别的替代方案。它是一个自定义的服务器端 JavaScript 运行时,支持在 Google 的云中托管和执行的应用程序。在不了解 HTTP、REST 或 OAuth2 的情况下,使用对象与各种 Google API(G Suite 及更高版本)对话。您还可以通过其JDBC Service访问外部数据库或通过其URL Fetch Service调用其他应用程序。
使用 Apps 脚本,您可以创建独立应用程序、文档绑定应用程序(仅适用于单个文档)或Google Docs Add-ons以扩展 Google Docs 的功能。以下是 Google Docs Apps 脚本概述页面以及 Google Docs(文档服务)的 Apps 脚本参考文档。如果这是您首选的学习工具,我还制作了各种 Apps 脚本视频。如果您是 Apps 脚本的新手,请参阅我对类似 SO 问题的回答以获取更多学习资源。
通常,Docs、Sheets、Slides 等 API 用于执行面向文档的功能,而 Drive API 主要用于基于文件的操作。但是“创建”是一种特殊情况,您可以使用其中任何一种。请参阅我对另一个 SO 问题的回答,该问题显示了通过 Sheets API 与 Drive API 创建新 Google Sheet 的区别。(Python 中的两个示例。)如果您对管理 Google 文档的共享或更新权限感兴趣,请阅读此内容。