Model danych interfejsu Drive Activity API

Ten przewodnik wyjaśnia główne składniki odpowiedzi w interfejsie Google Drive Activity API, prezentując przykłady i sposób ich interpretacji.

Obiekty

  • DriveActivity: to główne źródło danych zwracane przez zapytania do interfejsu Drive Activity API. Opisuje on co najmniej 1 podmiot wykonujący co najmniej 1 działanie wpływające na co najmniej 1 docel.

  • TimestampTimeRange: te elementy opisują odpowiednio pojedynczy punkt w czasie, w którym nastąpiło działanie, lub początek i koniec okresu, w którym miało ono miejsce.

  • Actor: Actor to zwykle użytkownik końcowy. Czasami jednak zdarza się, że zdarzenie systemowe powoduje Action, gdy administrator działa jako użytkownik lub jako on sam, albo gdy jest ono wywołane przez nierozpoznawalnego użytkownika. Wiadomość Actor obejmuje wszystkie te przypadki.

  • Target: Target to obiekt aktywności, np. plik, folder, dysk współdzielony lub komentarz do pliku. Pamiętaj, że wiele typów działań obsługuje więcej niż 1 rodzaj docelowego. Na przykład: Edit dotyczy zwykle plików na Dysku, ale inne działania, takie jak Rename i Create, mogą również dotyczyć folderów na Dysku i dysków współdzielonych. Docelowe elementy, które nie są elementami Dysku, mogą się do nich odwoływać, np. folder główny dysku lub nadrzędny dokument zawierający komentarz do pliku.

  • Action: każdy zasób DriveActivity ma co najmniej jedno powiązane działanie. Action jest samodzielne, podobnie jak zdarzenie, ponieważ zawiera nie tylko szczegółowy typ i informacje o działaniu, ale także Actor, Target oraz Timestamp lub TimeRange. Aby uniknąć powtórzeń, element Action nie wypełnia pól Target, Actor ani czasu, jeśli są one takie same jak w przypadku elementu DriveActivity.

  • ActionDetail: szczegółowe informacje o konkretnym Action. Na przykład szczegóły działania Move zawierają lokalizację źródłową i docelową, a PermissionChange określa, kto ma teraz dostęp do dokumentu i jakie ma uprawnienia.

Przykładowe odpowiedzi

Aby zobaczyć przykładowe odpowiedzi, zapoznaj się z poniższymi informacjami.

Użytkownik edytował plik na Dysku.

Zasób DriveActivity może zawierać tylko jedno działanie, np. edytowanie przez użytkownika jednego pliku.

"activities":[{
  "primaryActionDetail":{ "edit":{} },
  "actors":[ { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID" } } } ],
  "targets":[ { "driveItem":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } } ],
  "timestamp":{ "seconds":"1536794657", "nanos":791000000 },
  "actions":[ { "detail":{ "edit":{} } } ]
}]

Dane wyjściowe zawierają te wartości:

  • ACCOUNT_ID: identyfikator użytkownika. Można go używać z  interfejsem People API, aby uzyskać więcej informacji.
  • ITEM_ID: identyfikator elementu na Dysku.
  • TITLE: tytuł elementu na Dysku.

Zwróć uwagę, że obiekt Action w tej odpowiedzi nie zawiera wartości Actor, Target ani timestamp, ponieważ są one takie same jak ogólna wartość DriveActivity.

2 użytkownicy edytowali ten sam plik w podobnym czasie

Gdy używasz ConsolidationStrategy, powiązane działania są grupowane w jedną połączoną DriveActivity. W tym przykładzie 2 podobie do siebie działania są zgrupowane: jeden typ działania Edit od 2 różnych użytkowników.

"activities":[{
  "primaryActionDetail":{ "edit":{} },
  "actors":[
    { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_1" } } },
    { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_2" } } }
  ],
  "targets":[
    { "driveItem":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } }
  ],
  "timeRange":{
    "startTime":{ "seconds":"1541089823", "nanos":712000000 },
    "endTime":{ "seconds":"1541089830", "nanos":830000000 }
  },
  "actions":[
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_1" } } },
      "timestamp":{ "seconds":"1541089830", "nanos":830000000 }
    },
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_2" } } },
      "timestamp":{ "seconds":"1541089823", "nanos":712000000 }
    }
  ]
}]

Dane wyjściowe zawierają te wartości:

  • ACCOUNT_ID_1: identyfikator pierwszego użytkownika. Można go używać z interfejsem People API, aby uzyskać więcej informacji.
  • ACCOUNT_ID_2: identyfikator drugiego użytkownika.
  • ITEM_ID: identyfikator elementu na Dysku.
  • TITLE: tytuł elementu na Dysku.

Zwróć uwagę, że obiekt Action w tej odpowiedzi nie zawiera obiektu Target, ponieważ jest on taki sam jak ogólny obiekt DriveActivity.

Przykład pokazuje też, jak aplikacje mogą używać tylko informacji podsumowanych w DriveActivity, bez sprawdzania poszczególnych działań. Odpowiedź wskazuje, że w danym przedziale czasu 2 użytkownicy edytowali dany plik.

Użytkownik przeniósł 2 pliki do nowego katalogu

W tym przykładzie ConsolidationStrategy zgrupowało 2 powiązane działania Move, ponieważ pliki zostały przeniesione z tego samego źródła do tego samego miejsca docelowego w tym samym czasie.

"activities":[{
  "primaryActionDetail":{
    "move":{
      "addedParents":[ { ... } ]
      "removedParents":[ { ... } ]
    }
  },
  "actors":[ { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID" } } } ],
  "targets":[
    { "driveItem":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } },
    { "driveItem":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
  ],
  "timestamp":{ "seconds":"1541090960", "nanos":985000000 },
  "actions":[
    {
      "detail":{ "move":{ "addedParents":[ { ... } ] "removedParents":[ { ... } ] } },
      "target":{ "driveItem":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } }
    },
    {
      "detail":{ "move":{ "addedParents":[ { ... } ] "removedParents":[ { ... } ] } },
      "target":{ "driveItem":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
    }
  ]
}]

Dane wyjściowe zawierają te wartości:

  • ACCOUNT_ID: identyfikator użytkownika. Można go używać z  interfejsem People API, aby uzyskać więcej informacji.
  • ITEM_ID_1: identyfikator pierwszego elementu na Dysku.
  • ITEM_ID_2: identyfikator drugiego elementu na Dysku.
  • TITLE_1: tytuł pierwszego elementu na Dysku.
  • TITLE_2: tytuł drugiego elementu na Dysku.

Pamiętaj, że obiekt Action w tej odpowiedzi nie zawiera elementów Actor ani timestamp, ponieważ są one takie same jak w całościowym elemencie DriveActivity.