(据我所知)似乎没有用于编辑 Google Docs 的 API(不是电子表格,它们基于 HTML 的文档)。有没有人做过类似的事情?也许通过下载 HTML 版本、编辑和上传更改?
6 回答
更新(2019 年 5 月) Google Docs API 于 2019 年 2 月正式启动。文档位于我在下面 7 月更新的链接中。发布几周后,我制作了一个高级视频概述,介绍了使用 API 的邮件合并应用程序的外观。(这不是完整的G Suite Dev Show剧集,但确实链接到工作示例。)
更新(2018 年 7 月) Google Docs 团队在 Google Cloud NEXT '18 上预先宣布了即将推出的 REST API。有兴趣加入新 API 早期访问计划的开发人员应在https://developers.google.com/docs注册。下面的原始答案仍然存在,因为 REST API 将成为您以编程方式访问 Google Docs的第二种方式。
原始答案(2017 年 3 月):(大多数其他答案都已过时。)Google Docs 目前没有 REST API,但是开发人员可以使用Google Apps Script以编程方式访问(CRUD)文档,这是托管并运行的服务器端 JavaScript 应用程序在谷歌的云端。如果您不熟悉 Apps 脚本或使用它编辑 Google 文档,这里有一些学习资源:
- 您的第一个脚本创建和编辑文档,然后使用 Gmail 将其发送给您。
- 我为您准备了 4 个介绍视频(主要是 Sheets-flavored)
- 官方文档中的有用页面
- 如何使用 Apps 脚本概览页面CRUD Google Docs
- 通过此快速入门创建 Docs 插件来扩展 Docs 功能
- Google Docs(文档服务)的Apps 脚本参考文档
- 查看其他开发人员构建的 Google 文档插件
简单示例:如果您有一个(驱动器)文件 ID 为 的现有 Doc,DOCUMENT_ID_GOES_HERE
则基本上是使用 Apps 脚本编辑它的方法,将名称和电子邮件的伪“邮件合并”到给定占位符{NAME}
和的文档中{ADDR}
:
function mergeNameEmail() {
// Open a document by ID
var doc = DocumentApp.openById(DOCUMENT_ID_GOES_HERE);
// Access the body of the document
var body = doc.getBody();
// Merge name & address from template
body.replaceText("{NAME}", "Ima Developer");
body.replaceText("{ADDR}", "123 Main St, Anytown, XX 00000");
}
Document List API自 2012年9 月以来已被弃用,看起来它可能会在 2015 年 4 月之后停用。
正如问题所暗示的那样,使用 Drive API 更新 HTML 版本似乎是唯一的另一种方式。我一直在尝试这个,我遇到了一些问题。
- 评论被转换为引文并添加到文档末尾。
- 如果其他人正在通过浏览器编辑文档,那么他们在 API 读取和更新时间之间所做的任何更改都会丢失。
- 对文档的更新可能会破坏格式。例如,我多次更新了一个文档,并且某些元素(h1、h2 等)之间的垂直间距每次都不断扩大并破坏了文档。
- 当 API 更新发生时,文档中任何人的光标都会移动到页面顶部。
可能还有更多问题。这些只是我最近几天发现的。
不确定这是否是您正在寻找的确切内容,但您是否看过这里http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html看起来它允许编辑内容( v3.0 无论如何)。
有 com.google.api.services.drive.model.File.getExportLinks
您可以将 Google Doc 作为 docx 获取(例如),使用您喜欢的 docx 编辑器对其进行编辑,然后再次上传。请参阅docx4j 上下文中的示例(从GoogleDriveDownloadAsDocx开始)。注意自述文件。
或者对任何其他导出格式执行相同操作。
(2019) Google 现在为文档、幻灯片、表格、驱动器提供API 。
在 Google Drive 的文档中有一个示例应用程序,Dr. Edit 。