开发人员如何以编程方式编辑Google文档?是否有Docs API?

时间:2010-03-13 15:05:41

标签: google-apps-script google-api google-docs google-api-client google-docs-api

似乎没有(据我所知)编辑Google文档的API(不是电子表格,基于HTML的文档)。有没有人做过类似的事情?也许通过下载HTML版本,编辑和上传更改?

6 个答案:

答案 0 :(得分:3)

Document List API自2012年9月以来已被弃用,看起来可能是retired after April 2015

正如问题所示,使用Drive API更新HTML版本看起来是唯一的另一种方式。我一直在尝试这个,我遇到了一些问题。

  1. 评论将转换为引文并添加到文档末尾。
  2. 如果其他人通过浏览器编辑文档,则他们在API读取和更新时间之间所做的任何更改都将丢失。
  3. 对doc的更新可能会破坏格式。例如,我多次更新了一个文档,一些元素(h1,h2等)之间的垂直间距每次都在不断扩大,并破坏了文档。
  4. 发生API更新时,文档中任何人的光标都会移动到页面顶部。
  5. 可能会有更多问题。这些只是我在过去几天里发现的。

答案 1 :(得分:3)

更新(2018年7月) Google Docs团队在Google Cloud NEXT '18预先宣布即将推出的REST API。有兴趣进入新API早期访问计划的开发人员应在https://developers.google.com/docs注册。下面的原始答案仍然存在,因为REST API将成为您以编程方式访问Google文档的第二种方式。

原始答案(2017年3月) :(其他大多数答案都已过时。)Google文档目前没有REST API,但开发人员可以使用Google Apps Script以编程方式访问(CRUD)文档,托管在Google云中并在其中运行的服务器端JavaScript应用程序。如果您不熟悉Apps脚本或使用它编辑Google文档,请参阅以下学习资源:

简单示例:如果您有一个(驱动器)文件ID为DOCUMENT_ID_GOES_HERE的现有Doc,那么您可以使用Apps Script进行基本编辑,执行名称&的伪“邮件合并”。通过电子邮件发送给占位符{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");
}

答案 2 :(得分:1)

不确定这是否正是您正在寻找的内容,但是请您查看http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html看起来它允许编辑内容(无论如何都是v3.0)。

答案 3 :(得分:0)

Google Drive的文档中有一个示例应用Dr. Edit

答案 4 :(得分:0)

有com.google.api.services.drive.model.File.getExportLinks

您可以将Google Doc作为docx(例如),使用您喜欢的docx编辑器进行编辑,然后再次上传。有关在docx4j上下文中执行此操作(以the samples开头),请参阅GoogleDriveDownloadAsDocx。请注意README

或者对任何其他导出格式执行相同操作。

答案 5 :(得分:0)

(2019年),Google现在为文档,幻灯片,表格,驱动器提供API