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