Przesyłanie żądań w interfejsie Google Drive Activity API

Z tego przewodnika dowiesz się, jak wysyłać żądania do interfejsu Google Drive Activity API za pomocą metody activity.query.

Klucz zapytania

Możesz prosić o aktywność na 2 sposoby: według elementu na Dysku Google lub we wszystkich elementach w hierarchii folderów.

  • itemName: format tego klucza to „items/ITEM_ID”. Zwykle jest to plik na Dysku. Jeśli określisz folder dla tego klucza, będzie w nim widoczna aktywność związana z tym folderem, na przykład data utworzenia lub nazwy tego folderu.

  • ancestorName: format tego klucza to „items/ITEM_ID”, a odpowiedź zawiera aktywność dotyczącą wszystkich elementów w poddrzewie poniżej tego folderu.

Gdy nie jest ustawiony żaden klucz, domyślnie jest używany ancestorName elementu „items/root” (element główny) i pokazuje aktywność dla wszystkich elementów na Dysku.

Podział na strony

Pole pageSize pozwala zażądać przybliżonej liczby działań do zwrócenia w każdej odpowiedzi. Rzeczywista liczba zwracanych działań będzie się różnić, dlatego aplikacja powinna obsłużyć w odpowiedzi dowolne ilości.

Rozmiary stron są ograniczone. Jeśli aplikacja wymaga wielu działań, zamiast ustawiać dużą wartość pageSize, wysyłaj wiele żądań z wykorzystaniem podziału na strony. Jeśli do pobrania może być dostępnych więcej aktywności, niż jest zawarte w odpowiedzi, odpowiedź będzie też zawierać element nextPageToken. Aby pobrać więcej wyników, powtórz to samo żądanie, ale dodaj pole pageToken z wartością nextPageToken z poprzedniej odpowiedzi.

Konsolidacja

Obiekty Action są często grupowane i zwracane w ramach jednego zasobu DriveActivity. Niektóre grupowanie Action odbywa się spontanicznie. Na przykład przeniesienie elementu do folderu udostępnionego powoduje zmianę uprawnień.

W żądaniu możesz też określić element ConsolidationStrategy (nazywany czasem agregacją lub grupowaniem). Dzięki temu można grupować powiązane obiekty Action, np. przez kilka osób edytujących jeden element lub przeniesienie wielu plików za pomocą Actor do nowego folderu na Dysku.

Chociaż pojedynczy element Action ma 1 element Actor i 1 Target, po grupowaniu DriveActivity może mieć wielu podmiotów i wiele elementów docelowych. Jednak nawet po grupowaniu zawsze występuje „główne” działanie, które jest albo reprezentatywne lub najważniejsze ze wszystkich działań w zasobie DriveActivity, w zależności od oczekiwanej strategii konsolidacji.

W efekcie, niezależnie od tego, czy konsolidacja jest włączona, wielu klientów może wyświetlać tylko zawartość najwyższego poziomu zasobu DriveActivity (np. zbiorowe podmioty i cele w primaryActionDetail) i ignorować szczegółowe działania w odpowiedzi.

Filtry

Możesz ograniczyć działania, które mogą być zwracane w zasobie DriveActivity, tworząc ciąg filter w żądaniu activity.query. Dostępne są 2 obsługiwane pola: time i detail.action_detail_case.

Filtruj według czasu

Aby ograniczyć działania według zakresu czasu, wpisz nazwę pola time z operatorami numerycznymi w wartościach dat, połączoną opcjonalną operatorem „AND”. Użyj milisekund od 1 stycznia 1970 r. lub formatu RFC 3339, na przykład:

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

Filtruj według typu:

Aby ograniczyć zakres według typu działania, zastosuj nazwę pola detail.action_detail_case z operatorem „has” (:). Użyj liczby pojedynczej lub listy dozwolonych typów działań ujętych w nawiasy i rozdzielone spacją. Listę typów działań znajdziesz w obiektach ActionDetail.

Aby wykluczyć z odpowiedzi typ działania, dodaj łącznik (-) na początku ciągu filtra.

Oto kilka przykładów działań:

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

Kombinacje

Te warunki filtrowania można połączyć w pojedynczy ciąg znaków filter, na przykład:

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

Przykładowe żądania

Poproś o 10 ostatnich aktywności dotyczących elementu na Dysku:

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

Żądaj skonsolidowanych działań dla każdego elementu na Dysku pod folderem nadrzędnym:

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

Poproś o wszystkie działania MOVE i RENAME dotyczące elementu na Dysku:

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

Poproś o całą aktywność od 1 stycznia 2018 r. czasu EST:

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

Poproś o całą aktywność z wyjątkiem działań EDIT w czerwcu 2017 r. czasu UTC:

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