取得最佳成效的最佳做法

使用 Google 文档 API 时,您应遵循以下几项原则。 这些原则包括:

  • 为了提高效率,请向后编辑
  • 规划协作
  • 使用 WriteControl 字段确保状态一致性
  • 考虑标签页

以下部分将介绍这些原则。

为了提高效率,请向后编辑

在对 documents.batchUpdate 方法的单个调用中,请按索引位置的 降序对请求进行排序。这样就不必计算因插入和删除而导致的索引更改。

规划协作

预计文档状态会发生变化。在一个方法调用和另一个方法调用之间,其他协作者可能会更新文档,如下图所示:

文档在方法调用之间可能发生的变化。

如果您的索引有误,这可能会导致错误。如果多个用户使用界面编辑文档,Google 文档会以透明方式处理此问题。不过,作为 API 客户端,您的应用必须管理此问题。即使您不希望对文档进行协作,也务必进行防御性编程,并确保文档状态保持一致。如需了解确保一致性的一种方法, 请参阅 WriteControl 部分。

使用 WriteControl 建立状态一致性

当您读取文档然后更新文档时,可以使用 如何处理冲突的更改的行为,使用 WriteControl 字段在 documents.batchUpdate 方法中。WriteControl 提供对写入请求执行方式的授权。

使用方法如下:

  1. 使用 documents.get 方法获取文档,并从返回的 documents 资源中保存 revisionId
  2. 撰写更新请求。
  3. 包含一个可选的 WriteControl 对象,其中包含以下两个选项之一:
    1. requiredRevisionId 字段设置为写入请求所应用文档的 revisionId。如果文档自 API 读取请求以来已修改,则系统不会处理写入请求,并且会返回错误。
    2. targetRevisionId 字段设置为写入请求所应用文档的 revisionId。如果文档自 API 读取请求以来已修改,则系统会根据协作者的更改应用写入请求更改。写入请求的结果会将写入请求更改和协作者更改合并到文档的新修订版本中。文档服务器负责合并内容。

如需查看如何使用 WriteControl 构建批量请求的示例,请参阅 此 批量请求示例

考虑标签页

单个文档可以包含多个标签页, 这需要在 API 请求中进行特定处理。

请注意以下事项:

  1. documents.get 方法中将 includeTabsContent 参数设置为 true,以从文档中的所有标签页检索内容。默认情况下,系统不会返回所有标签页内容。
  2. 指定要将每个 Request 应用到的标签页的 ID,在 documents.batchUpdate 方法中。每个 Request 都包含一种指定要应用更新的标签页的方法。默认情况下,如果未指定 标签页,则 Request 在大多数情况下将应用于文档中的第一个标签页。如需了解详情,请参阅 Request的 文档。