如何以编程方式在Google文档中创建文档?

时间:2010-04-24 15:04:23

标签: api google-docs

documentation for Google Documents List API似乎表示您可以创建本地文档并上传它。是否无法通过API在 Google Docs上实际创建和编辑文档

4 个答案:

答案 0 :(得分:27)

虽然the docs将其称为“上传”,但所有内容都归结为发送格式正确的HTTP POST请求,因此当然它实际上可能是新创建的而不是实际“上传”其他现有文件。 (通过POST请求创建类似于通常描述为REST API的内容,但在真实REST中,您通常使用PUT请求而非当然)。

您只需要创建以here列出的任何格式表示文档的大量数据 - 根据您的编程语言,对电子表格最简单的text/csvapplication/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中,根据the docs,API建议使用ETags来避免在多个客户端同时“上传”(即创建或更新文档)时覆盖更改。但是直接准备POST总是可行的,因为几乎REST API被记录为所有特定于语言的API的 协议。

答案 1 :(得分:13)

亚历克斯的回答虽然无疑是正确的,但却引出了一个问题:“我如何通过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群组中的this post找到GData Docs API。

关键见解(对我来说无论如何)是:

  1. 意识到MediaSource构造函数的形式参数“file_handle”将采用任何类文件对象,并且
  2. 发现(作为OP对谷歌集团帖子提及的后续行动)单元测试是一个很好的例子来源
  3. (我无法找到Alex的文档链接引用的特定于Python的开发人员指南 - 可能是因为Google将文档资产从code.google.com转移到developers.google.com而丢失或埋没了。 link现在重定向到更通用的文档,该文档主要显示.NET和Java示例,但只有一点Python。)

答案 2 :(得分:2)

自2019年2月4日起,Google文档现在具有REST API。

请参阅文档: https://developers.google.com/docs/api/

答案 3 :(得分:1)

(2019年9月),您可以通过以下三种方式在Google文档中以编程方式创建文档:

  1. Google Docs REST API(低级; Python,JS / Node.js,Java,C#/。NET,PHP,Ruby,Go等)
  2. Google Apps Script(高级;仅JavaScript)
  3. Google Drive API(类似于上面的Docs API;类似于上面的Docs API;上面的两种选择都可以创建或编辑文档,但这是仅创建或删除以及编辑共享/权限)

Docs API于2019年2月正式launched。我制作了high-level video overview,说明使用该API的邮件合并应用程序的外观。 (这不是完整的G Suite Dev Show情节,但确实链接到工作示例。)查看使用API​​的各种guides,包括各种编程语言的Quickstart示例。

OTOH,Apps Script是一个更简单,更高级的选择。这是一个自定义服务器端JavaScript运行时,支持在Google的云中托管+执行的应用。使用对象与various Google APIs (G Suite & beyond)进行对话,而无需了解HTTP,REST或OAuth2。您还可以使用其JDBC Service访问外部数据库,或通过其URL Fetch Service调用其他应用。

使用Apps脚本,您可以创建standalone applicationsdocument-bound applications(仅适用于单个文档)或Google Docs Add-ons来扩展Google文档的功能。这是Google Docs Apps脚本overview page以及Google Docs(文档服务)的Apps脚本reference documentation。如果您是首选的学习工具,我还制作了variety of Apps Script videos。如果您不熟悉Apps脚本,请参见my answer to a similar SO question,以获取更多学习资源。

通常,文档,表格,幻灯片等API用于执行面向文档的功能,而Drive API主要用于基于文件的操作。但是,“创建”是一种特殊情况,您可以使用其中任何一个。请参见my answer to another SO question,其中显示了通过Sheets API与Drive API黑白创建新Google Sheet的区别。 (两个示例均使用Python。)如果您有兴趣管理Google文档的共享或更新权限,请阅读this