在使用 Google 文档 API 时,您应遵循以下几项原则。其中包括:
- 从后往前编辑以提高效率
- 规划协作
- 使用
WriteControl
字段确保状态一致 - 考虑标签页
以下部分介绍了这些原则。
从后往前编辑以提高效率
在对 documents.batchUpdate
方法的单次调用中,请按索引位置的降序对请求进行排序。这样就无需计算由于插入和删除操作导致的索引更改量。
规划协作
预计文档状态会发生变化。在一次方法调用和另一次方法调用之间,其他协作者可能会更新文档,如下图所示:
如果您的索引有误,就可能会导致错误。当多位用户使用界面编辑文档时,Google 文档会透明地处理这项工作。不过,作为 API 客户端,您的应用必须管理此问题。即使您预计不打算协作处理文档,也必须采取防御性编程并确保文档状态保持一致。如需了解确保一致性的方法,请参阅 WriteControl
部分。
使用 WriteControl 建立状态一致性
在读取文档后再更新文档时,您可以使用 documents.batchUpdate
方法中的 WriteControl
字段控制如何处理竞争更改的行为。WriteControl
提供了写入请求执行方式的权限。
具体使用方法如下:
- 使用
documents.get
方法获取文档,并保存返回的documents
资源中的revisionId
。 - 编写更新请求。
- 添加一个可选的
WriteControl
对象,并使用以下任一选项:requiredRevisionId
字段设置为要应用写入请求的文档的revisionId
。如果文档在 API 读取请求发出后发生了修改,系统将不会处理写入请求,并返回错误。targetRevisionId
字段设置为要应用写入请求的文档的revisionId
。如果文档在 API 读取请求发出后发生了修改,系统会将写入请求更改应用于协作者更改。写入请求的结果将写入请求更改和协作者的更改合并到文档的新修订版本中。Google 文档服务器负责合并内容。
如需查看有关如何使用 WriteControl
构建批量请求的示例,请参阅此批量请求示例。
考虑标签页
单个文档可以包含多个标签页,这些标签页需要在 API 请求中进行特殊处理。
请注意以下事项:
- 在
documents.get
方法中将includeTabsContent
参数设置为true
,以从文档中的所有标签页检索内容。默认情况下,系统不会返回所有标签页内容。 - 指定要将每个
Request
应用到的标签页的 ID,以便在documents.batchUpdate
方法中使用。每个Request
都包含一种方法,用于指定要应用更新的标签页。默认情况下,如果未指定标签页,则在大多数情况下,Request
将应用于文档中的第一个标签页。如需了解详情,请参阅Request
的文档。