Model danych interfejsu Drive Activity API

W tym przewodniku objaśniamy główne komponenty odpowiedzi w interfejsie Google Drive Activity API oraz przedstawiamy przykłady i sposoby ich interpretacji.

Obiekty

  • DriveActivity – to podstawowy zasób zwracany przez zapytania do interfejsu Drive Activity API. Opisuje on jednego lub więcej podmiotów wykonujących co najmniej 1 działanie mające wpływ na co najmniej jeden cel.

  • Timestamp i TimeRange – opisują one odpowiednio pojedynczy punkt w czasie wystąpienia aktywności lub początek i koniec aktywności w danym okresie.

  • Actor – zwykle Actor to użytkownik końcowy. Czasami jednak zdarzenie systemowe może aktywować Action, gdy administrator działa jako użytkownik lub sam albo wykonuje czynność niemożliwą do zidentyfikowania. Wiadomość Actor obejmuje każdy z tych przypadków.

  • Target – obiekt Target jest obiektem działania, takiego jak plik, folder, dysk współdzielony lub komentarz do pliku. Pamiętaj, że wiele typów działań obsługuje więcej niż jeden rodzaj celu. Na przykład chociaż zasada Edit zwykle ma zastosowanie do plików na Dysku, inne działania, takie jak Rename i Create, mogą też mieć zastosowanie do folderów na Dysku i dysków współdzielonych. Cele, które nie są elementami na Dysku, mogą nadal odwoływać się do nich, np. do folderu głównego dysku lub dokumentu nadrzędnego zawierającego komentarz do pliku.

  • Action – każdy zasób DriveActivity ma co najmniej 1 powiązane działanie. Element Action jest autonomiczny (tak jak zdarzenie) tym, że zawiera nie tylko szczegółowy typ i informacje o danym działaniu, ale też elementy Actor, Target i Timestamp lub TimeRange. Aby uniknąć nadmiarowości, pole Action nie wypełnia własnych pól Target, Actor ani czasu, gdy są one takie same jak ogólne pola DriveActivity.

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

Przykładowe odpowiedzi

Użytkownik zmodyfikował plik na Dysku:

Prosty zasób DriveActivity może zawierać tylko 1 działanie, np. edycję 1 pliku przez użytkownika.

"activities":[{
  "primary_action_detail":{ "edit":{} },
  "actors":[ { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID" } } } ],
  "targets":[ { "drive_item":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } } ],
  "timestamp":{ "seconds":"1536794657", "nanos":791000000 },
  "actions":[ { "detail":{ "edit":{} } } ]
}]

Dane wyjściowe zawierają następujące 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.

Pamiętaj, że Action w tej odpowiedzi nie zawiera tych elementów: Actor, Target ani TimeStamp, ponieważ są one identyczne z ogólnymi wartościami DriveActivity.

Dwóch użytkowników edytowało ten sam plik w podobnym czasie:

Gdy konsolidacja jest włączona, powiązane działania są zgrupowane w jedną DriveActivity. W tym przykładzie są zgrupowane 2 podobne działania: 1 typ działania Edit od 2 różnych użytkowników.

"activities":[{
  "primary_action_detail":{ "edit":{} },
  "actors":[
    { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_1" } } },
    { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_2" } } }
  ],
  "targets":[
    { "drive_item":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } }
  ],
  "time_range":{
    "start_time":{ "seconds":"1541089823", "nanos":712000000 },
    "end_time":{ "seconds":"1541089830", "nanos":830000000 }
  },
  "actions":[
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_1" } } },
      "timestamp":{ "seconds":"1541089830", "nanos":830000000 }
    },
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_2" } } },
      "timestamp":{ "seconds":"1541089823", "nanos":712000000 }
    }
  ]
}]

Dane wyjściowe zawierają następujące 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.

Działania w tej odpowiedzi nie obejmują obiektu Target, ponieważ jest on taki sam jak ogólny DriveActivity.

Ten przykład pokazuje też, jak aplikacje mogą korzystać tylko z podsumowań informacji dostępnych w polu DriveActivity, bez uwzględniania poszczególnych działań. Odpowiedź wskazuje, że 2 użytkowników edytowało dany plik w określonym czasie.

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

W tym przykładzie strategia konsolidacji grupowała 2 powiązane działania Move, ponieważ pliki zostały jednocześnie przeniesione z tego samego źródła do tego samego miejsca docelowego.

"activities":[{
  "primary_action_detail":{
    "move":{
      "added_parents":[ { ... } ]
      "removed_parents":[ { ... } ]
    }
  },
  "actors":[ { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID" } } } ],
  "targets":[
    { "drive_item":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } },
    { "drive_item":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
  ],
  "timestamp":{ "seconds":"1541090960", "nanos":985000000 },
  "actions":[
    {
      "detail":{ "move":{ "added_parents":[ { ... } ] "removed_parents":[ { ... } ] } },
      "target":{ "drive_item":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } }
    },
    {
      "detail":{ "move":{ "added_parents":[ { ... } ] "removed_parents":[ { ... } ] } },
      "target":{ "drive_item":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
    }
  ]
}]

Dane wyjściowe zawierają następujące 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.

Działania w tej odpowiedzi nie obejmują Actor ani TimeStamp, ponieważ są one takie same jak ogólne DriveActivity.