代码之家  ›  专栏  ›  技术社区  ›  Tim Lytle

开发人员如何以编程方式编辑google文档?有文档api吗?

  •  10
  • Tim Lytle  · 技术社区  · 15 年前

    据我所知,似乎没有一个api来编辑google文档(而不是电子表格,它们基于html的文档)。有人做过这样的事吗?也许通过下载html版本,编辑和上传更改?

    5 回复  |  直到 6 年前
        1
  •  1
  •   dave    15 年前

    不确定这是不是你要找的,但你看过这里吗 http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html 看起来它允许编辑内容(无论如何都是v3.0)。

        2
  •  3
  •   goody44    10 年前

    这个 Document List API 从2012年9月开始就被弃用了 retired after April 2015 .

    如问题所示,使用drive api更新html版本似乎是唯一的另一种方法。我一直在尝试这个,我经历了一些问题。

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

    可能还有更多的问题。这些就是我最近几天发现的。

        3
  •  3
  •   wescpy    6 年前

    更新(2018年7月) google docs团队于18年在google cloud上预告了即将发布的rest api。有兴趣进入新api的早期访问程序的开发人员应该在 https://developers.google.com/docs . 下面的原始答案仍然有效,因为rest api将成为 第二 以编程方式访问google文档的方法。

    原答案(2017年3月) :(大多数其他答案都过时了。)google docs目前没有rest api,但是开发人员可以使用 Google Apps Script ,服务器端javascript应用程序,托管在google的云中并在其中运行。如果你对apps脚本或用它编辑google文档还不熟悉,这里有一些学习资源:

    简单示例:如果您有一个(驱动器)文件ID为的现有文档 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");
    }
    
        4
  •  0
  •   Juan A. Navarro    12 年前

    这里有一个示例应用程序, Dr. Edit ,在google drive的文档中。

        5
  •  0
  •   JasonPlutext    10 年前

    有com.google.api.services.drive.model.file.getexportlinks

    您可以将google文档作为docx(例如),使用您喜爱的docx编辑器对其进行编辑,然后再次上传。见 the samples 因为这样做(从 GoogleDriveDownloadAsDocx )在docx4j的上下文中,注意 README .

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