Cómo realizar solicitudes en la API de actividad de Google Drive

En esta guía, se explica cómo realizar solicitudes en la API de Google Drive Activity mediante el método activity.query.

Clave de consulta

Existen 2 maneras de solicitar actividad: por elemento de Google Drive o para todo lo que se encuentra por debajo de una jerarquía de carpetas.

  • itemName: El formato de esta clave es "items/ITEM_ID". Por lo general, es un archivo en Drive. Si especificas una carpeta para esta clave, se mostrará la actividad de la carpeta, como cuándo se creó o se le cambió el nombre.

  • ancestorName: El formato de esta clave es "items/ITEM_ID", y la respuesta incluye la actividad en todos los elementos del subárbol debajo de esta carpeta.

Cuando no se establece ninguna clave, usa de forma predeterminada el parámetro ancestorName de "items/root" y muestra la actividad de todos los elementos de tu unidad de Drive.

Paginación

El campo pageSize te permite solicitar una cantidad aproximada de actividades que se mostrarán en cada respuesta. El recuento real de actividades que se muestran variará, por lo que la app debe controlar cantidades arbitrarias en la respuesta.

El tamaño de las páginas es limitado. Si la app necesita muchas actividades, realiza varias solicitudes mediante la paginación en lugar de configurar un valor grande para pageSize. En particular, si puede haber más actividad para recuperar que la que se incluye en la respuesta, esta también contendrá un nextPageToken. Para recuperar más resultados, repite la misma solicitud, pero agrega un campo pageToken con el valor de nextPageToken de la respuesta anterior.

del costo

Los objetos Action a menudo se agrupan y se muestran dentro de un solo recurso DriveActivity. Algunas agrupaciones de Action se producen de forma espontánea, por ejemplo, mover un elemento a una carpeta compartida activa un cambio de permiso.

También puedes especificar un ConsolidationStrategy (a veces llamado agregación o lotes) en la solicitud. Esto habilita otras agrupaciones de objetos Action relacionados, como varios actores que editan un elemento o un Actor que mueve varios archivos a una nueva carpeta de Drive.

Si bien un Action individual tiene un Actor y un Target, después de la agrupación, el DriveActivity resultante puede tener varios actores y varios objetivos. Sin embargo, incluso después de la agrupación, siempre hay una acción "principal" que es representativa o es la más importante de todas las acciones en el recurso DriveActivity, según la estrategia de consolidación solicitada.

Como resultado, independientemente de si la consolidación está activada o no, puede ser suficiente que muchos clientes vean solo el contenido de nivel superior de un recurso DriveActivity (como los actores colectivos y los objetivos dentro de primaryActionDetail) y luego ignoren las acciones detalladas en la respuesta.

Filtros

Puedes restringir las acciones que se pueden mostrar en el recurso DriveActivity construyendo una cadena filter en la solicitud activity.query. Se admiten 2 campos: time y detail.action_detail_case.

Filtrar por hora

Para restringir acciones por intervalo de tiempo, especifica el nombre de campo time con operadores numéricos en los valores de fecha, unidos por un "AND" opcional. Usa los milisegundos desde el 1 de enero de 1970 o el formato RFC 3339, como:

  • time > 1452409200000 AND time <= 1492812924310
  • time >= "2016-01-10T01:02:03-05:00"

Filtrar por tipo

Para restringir por tipo de acción, aplica el nombre de campo detail.action_detail_case con el operador "has" (:). Usa un valor único o una lista de tipos de acción permitidos entre paréntesis, separados por un espacio. Para encontrar una lista de tipos de acciones, revisa los objetos ActionDetail.

Para excluir un tipo de acción de la respuesta, agrega un guion (-) al comienzo de la string de filtro.

A continuación, se incluyen algunos ejemplos de tipos de acciones:

  • detail.action_detail_case:RENAME
  • detail.action_detail_case:(CREATE RESTORE)
  • -detail.action_detail_case:MOVE

Combinaciones

Estas condiciones de filtrado se pueden combinar dentro de una sola string filter, como las siguientes:

  • detail.action_detail_case:(CREATE EDIT RESTORE) time > 1452409200000

Solicitudes de ejemplo

Solicita las 10 actividades más recientes para un elemento de Drive:

{
  "itemName": "items/ITEM_ID",
  "pageSize": 10
}

Solicita actividades consolidadas para cada elemento de Drive que se encuentre debajo de una carpeta principal:

{
  "ancestorName": "items/ITEM_ID",
  "consolidationStrategy": {
    "legacy": {}
  }
}

Solicita todas las acciones MOVE y RENAME en un elemento de Drive:

{
  "itemName": "items/ITEM_ID",
  "filter": "detail.action_detail_case:(MOVE RENAME)"
}

Solicitar toda la actividad desde el 1 de enero de 2018 (hora del este):

{
  "ancestorName": "items/root",
  "filter": "time >= \"2018-01-01T00:00:00-05:00\""
}

Solicita toda la actividad, excepto las acciones de EDIT, durante junio de 2017 UTC:

{
  "ancestorName": "items/root",
  "filter": "time >= \"2018-06-01T00:00:00Z\" time < \"2018-07-01T00:00:00Z\" -detail.action_detail_case:EDIT"
}