We
recently demonstrated how to use field masks to limit the amount of data
that comes back via response payloads from read (GET) calls to Google APIs.
Today, we'll focus on a different use case for field masks: update requests.
In this scenario, field masks serve a different, but similar purpose—they still
filter, but function more like bitmasks by controlling which API fields to
update. The following video walks through several examples of update field mask
usage with both the Google Sheets and Slides APIs. Check it out.
In the sample JSON payload below, note the request to set the cells’ bold attribute to true
(per the cell directive below), then notice that the field mask
(fields) practically mirrors the request:
Now, you might think, "is that redundant?" Above, we highlighted that it takes
two parts: 1) the request provides the data for the desired changes, and 2) the
field mask states what should be updated, such as the
userEnteredFormat/textFormat/bold attribute for all the cells in
the first row. To more clearly illustrate this, let's add something else to the
mask like italics so that it has both bold and italic fields:
However, while both elements are in the field mask, we've only provided the
update data for bold. There's no data for italic setting specified
in the request body. In this case, italics for all cells will be reset, meaning
if the cells were originally italicized, those italics will be removed after
this API request completes. And vice versa, if the cells were not italicized to
begin with, they'll stay that way. This feature gives developers the ability to
undo or reset any prior settings on affected range of cells. Check out the video
for more examples and tips for using field masks for update requests.
To learn more about using field masks for partial response in API payloads, check out this video and
thefirstpost in
this two-part series. For one of the most comprehensive write-ups on both (read
and update) use cases, see the
guide in the Google Slides API documentation. Happy field-masking!