字段掩码是 API 调用方列出请求应返回或更新的字段的方式。使用 FieldMask 可让 API 避免执行不必要的工作并提高性能。字段掩码适用于 Google 文档 API 中的读取和更新方法。
使用字段掩码进行读取
文档可能很大,并且您通常不需要读取请求返回的 Document
资源的每个部分。您可以使用 fields
网址参数限制 Docs API 响应中返回的内容。为了获得最佳性能,请在回复中仅明确列出您需要的字段。
fields 参数的格式与 FieldMask 的 JSON 编码相同。简而言之,多个不同的字段以英文逗号分隔,子字段以英文句点分隔。字段名称可以采用 camelCase 或 separated_by_underscores 格式指定。为方便起见,您可以在括号中列出同一类型的多个子字段。
以下 documents.get
请求示例使用 title,tabs(documentTab(body.content(paragraph))),revisionId
字段掩码提取文档的 title
、Body
对象的 Paragraph
(从所有标签页中提取),以及文档内的文档 revisionId
:
GET https://docs.googleapis.com/v1/documents/documentId?fields=title,tabs(documentTab(body.content(paragraph))),revisionId
对此方法调用的响应是一个 Document
对象,其中包含字段掩码中请求的组件:
{ "title": "TITLE
", "revisionId": "REVISION_ID
", "tabs": [ { "documentTab": { "body": { "content": [ {}, { "paragraph": { "elements": [ { "startIndex": 1, "endIndex": 59, "textRun": { "content": "CONTENT
", "textStyle": {} } } ], "paragraphStyle": { "namedStyleType": "NORMAL_TEXT", "direction": "LEFT_TO_RIGHT" } } } ] } } } ] }
使用字段掩码进行更新
有时,您只需要更新对象中的某些字段,而将其他字段保持不变。documents.batchUpdate
操作中的更新请求使用字段掩码来告知 API 要更改哪些字段。更新请求会忽略字段掩码中未指定的任何字段,并使用其当前值。
您还可以通过以下方式取消设置字段:在更新后的消息中不指定该字段,但将该字段添加到掩码中。这会清除字段之前的所有值。
更新字段掩码的语法与读取字段掩码相同。
以下示例使用 UpdateTextStyleRequest
将文档中“Google 文档 API”字样设置为 range
5-20 范围内的粗体:
POST https://docs.googleapis.com/v1/documents/documentId:batchUpdate
{ "title": "TITLE
", "revisionId": "REVISION_ID
", "suggestionsViewMode": "SUGGESTIONS_INLINE", "documentId": "DOCUMENT_ID
", "tabs": [ { "documentTab": { "body": { "content": [ { "endIndex": 1, "sectionBreak": { "sectionStyle": { "columnSeparatorStyle": "NONE", "contentDirection": "LEFT_TO_RIGHT", "sectionType": "CONTINUOUS" } } }, { "startIndex": 1, "endIndex": 59, "paragraph": { "elements": [ { "startIndex": 1, "endIndex": 5, "textRun": { "content": "CONTENT
", "textStyle": {} } }, { "startIndex": 5, "endIndex": 20, "textRun": { "content": "CONTENT
", "textStyle": { "bold": true } } }, { "startIndex": 20, "endIndex": 59, "textRun": { "content": "CONTENT
", "textStyle": {} } } ], "paragraphStyle": { "namedStyleType": "NORMAL_TEXT", "direction": "LEFT_TO_RIGHT" } } } ] }, { ... // style details }, } } ], }