This guide explains how to make requests in the Google Drive Activity API using the
activity.query
method.
Query key
There are 2 ways to request activity: by Google Drive item, or for everything underneath a folder hierarchy.
itemName
: The format for this key is "items/ITEM_ID". Typically this is a file in Drive. If you specify a folder for this key, it shows activity for the folder such as when it was created or renamed.ancestorName
: The format for this key is "items/ITEM_ID", and the response includes activity on all items in the subtree below this folder.
When no key is set, it defaults to using the ancestorName
of "items/root" and
shows activity for all items in your Drive.
Pagination
The pageSize
field allows you to request an approximate number of activities
to return in each response. The actual count of returned activities will vary,
so your app should handle arbitrary quantities in the response.
Page sizes are limited. If your app needs many activities, make multiple
requests using pagination instead of setting a large value for pageSize
.
Specifically, if there might be more activity to fetch than what's included in
the response, then the response will also contain a nextPageToken
. To retrieve
more results, repeat the same request but add a pageToken
field with the value
of nextPageToken
from the prior response.
Consolidation
Action
objects are often grouped and returned within a single
DriveActivity
resource. Some Action
groupings occur spontaneously, such as moving an
item into a shared folder triggering a permission change.
You can also specify a
ConsolidationStrategy
(sometimes called aggregation or batching) in the request. This enables
other groupings of related Action
objects, such as several actors editing one
item, or one Actor
moving multiple files into a new Drive folder.
While an individual Action
has one Actor
and one Target
, after grouping,
the resulting DriveActivity
can have multiple actors and multiple targets.
Even after grouping, however, there's always a "primary" action that's
either representative, or the most important, of all actions in the
DriveActivity
resource, depending on the requested consolidation strategy.
As a result, whether or not consolidation is turned on, it might be sufficient for
many clients to view only the top-level contents of a DriveActivity
resource (such as
the collective actors and targets within the primaryActionDetail
) and ignore
the detailed actions in the response.
Filters
You can restrict the actions that might be returned in the DriveActivity
resource by constructing a filter
string in the activity.query
request. There's
2 supported fields: time
and detail.action_detail_case
.
Filter by time
To restrict actions by time range, specify the field name time
with numerical
operators on date values, joined by an optional "AND". Use milliseconds since Jan 1, 1970 or the
RFC 3339 format, such as:
time > 1452409200000 AND time <= 1492812924310
time >= "2016-01-10T01:02:03-05:00"
Filter by type
To restrict by action type, apply the field name detail.action_detail_case
with
the "has" operator (:
). Use either a singular value or a list of allowed action
types enclosed in parentheses, separated by a space. To find a list of action
types, review the ActionDetail
objects.
To exclude an action type from the response,
prepend a hyphen (-
) to the beginning of the filter string.
Here's some action type examples:
detail.action_detail_case:RENAME
detail.action_detail_case:(CREATE RESTORE)
-detail.action_detail_case:MOVE
Combinations
These filtering conditions can be combined within a single filter
string, such as:
detail.action_detail_case:(CREATE EDIT RESTORE) time > 1452409200000
Example requests
Request the 10 most recent activities for a Drive item:
{
"itemName": "items/ITEM_ID",
"pageSize": 10
}
Request consolidated activities for every Drive item below an ancestor folder:
{
"ancestorName": "items/ITEM_ID",
"consolidationStrategy": {
"legacy": {}
}
}
Request all MOVE
and RENAME
actions on a Drive item:
{
"itemName": "items/ITEM_ID",
"filter": "detail.action_detail_case:(MOVE RENAME)"
}
Request all activity since January 1, 2018 EST:
{
"ancestorName": "items/root",
"filter": "time >= \"2018-01-01T00:00:00-05:00\""
}
Request all activity, except EDIT
actions, during June 2017 UTC:
{
"ancestorName": "items/root",
"filter": "time >= \"2018-06-01T00:00:00Z\" time < \"2018-07-01T00:00:00Z\" -detail.action_detail_case:EDIT"
}