Mô hình dữ liệu API Activity Activity

Hướng dẫn này giải thích các thành phần chính của phản hồi trong Google Drive Activity API, trình bày các ví dụ và cách diễn giải các phản hồi đó.

Đối tượng

  • DriveActivity – Đây là tài nguyên chính mà các truy vấn đến Drive Activity API trả về. Thuộc tính này mô tả một hoặc nhiều đối tượng thực hiện một hoặc nhiều hành động ảnh hưởng đến một hoặc nhiều mục tiêu.

  • TimestampTimeRange – Mô tả tương ứng một thời điểm duy nhất khi hoạt động xảy ra hoặc thời điểm bắt đầu và kết thúc khi hoạt động xảy ra trong một khoảng thời gian.

  • Actor – Thông thường, Actor là người dùng cuối. Tuy nhiên, đôi khi, một sự kiện của hệ thống có thể kích hoạt Action khi quản trị viên đóng vai trò là người dùng hoặc chính họ, hoặc khi được một người không thể xác định danh tính thực hiện. Thông báo Actor đóng gói từng trường hợp trong số này.

  • TargetTarget là đối tượng của một hoạt động, chẳng hạn như tệp, thư mục, bộ nhớ dùng chung hoặc nhận xét về tệp. Xin lưu ý rằng nhiều loại hành động hỗ trợ nhiều loại mục tiêu. Ví dụ: mặc dù Edit thường áp dụng cho tệp trên Drive, nhưng các thao tác khác như RenameCreate cũng có thể áp dụng cho thư mục Drive và bộ nhớ dùng chung. Các mục tiêu không phải là các mục trên Drive vẫn có thể tham chiếu đến một mục tiêu, chẳng hạn như thư mục gốc của ổ hoặc tài liệu mẹ chứa nhận xét về tệp.

  • Action – Mỗi tài nguyên DriveActivity có một hoặc nhiều hành động liên quan. Action là độc lập, chẳng hạn như sự kiện, trong đó không chỉ bao gồm loại và thông tin chi tiết về thao tác, mà còn bao gồm Actor, TargetTimestamp hoặc TimeRange. Để tránh tình trạng thừa mã, Action sẽ không điền các trường Target, Actor hoặc thời gian của chính mình khi các trường đó giống với DriveActivity tổng thể.

  • ActionDetail – Đây là loại cụ thể và thông tin chi tiết về Action. Ví dụ: thông tin chi tiết về thao tác Move có vị trí nguồn và vị trí đích, đồng thời PermissionChange chỉ định hiện tại ai có thể truy cập vào tài liệu và có các đặc quyền.

Câu trả lời mẫu

Một người dùng đã chỉnh sửa một tệp trong Drive:

Tài nguyên DriveActivity đơn giản có thể chỉ bao gồm một thao tác, chẳng hạn như người dùng chỉnh sửa một tệp.

"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":{} } } ]
}]

Kết quả này bao gồm các giá trị sau:

  • ACCOUNT_ID: mã nhận dạng của người dùng. Bạn có thể sử dụng API này với API Người để nhận thêm thông tin.
  • ITEM_ID: mã nhận dạng của mục trên Drive.
  • TITLE: tiêu đề của mục trên Drive.

Lưu ý là Action trong phản hồi này không bao gồm Actor, Target hoặc TimeStamp vì chúng giống với DriveActivity tổng thể.

Hai người dùng đã chỉnh sửa cùng một tệp tại thời điểm tương tự:

Khi bật tính năng hợp nhất, các hành động liên quan sẽ được nhóm thành một DriveActivity. Trong ví dụ này, 2 thao tác tương tự được nhóm: một loại thao tác Edit từ 2 người dùng khác nhau.

"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 }
    }
  ]
}]

Kết quả này bao gồm các giá trị sau:

  • ACCOUNT_ID_1: mã nhận dạng của người dùng đầu tiên. Bạn có thể sử dụng API này với API Người để nhận thêm thông tin.
  • ACCOUNT_ID_2: mã nhận dạng của người dùng thứ hai.
  • ITEM_ID: mã nhận dạng của mục trên Drive.
  • TITLE: tiêu đề của mục trên Drive.

Lưu ý rằng các thao tác trong phản hồi này không bao gồm Target vì nó giống với DriveActivity tổng thể.

Ví dụ này cũng minh hoạ cách các ứng dụng chỉ có thể sử dụng thông tin tóm tắt trong DriveActivity mà không xem xét từng thao tác. Phản hồi cho biết 2 người dùng đã chỉnh sửa một tệp nhất định trong một khoảng thời gian.

Người dùng đã di chuyển 2 tệp vào thư mục mới:

Trong ví dụ này, chiến lược hợp nhất nhóm 2 hành động Move có liên quan vì các tệp đã được di chuyển từ cùng một nguồn sang cùng một đích đến cùng lúc.

"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":{} } }
    }
  ]
}]

Kết quả này bao gồm các giá trị sau:

  • ACCOUNT_ID: mã nhận dạng của người dùng. Bạn có thể sử dụng API này với API Người để nhận thêm thông tin.
  • ITEM_ID_1: mã nhận dạng của mục đầu tiên trên Drive.
  • ITEM_ID_2: mã nhận dạng của mục thứ hai trên Drive.
  • TITLE_1: tiêu đề của mục đầu tiên trên Drive.
  • TITLE_2: tiêu đề của mục thứ hai trên Drive.

Lưu ý rằng các thao tác trong phản hồi này không bao gồm Actor hoặc TimeStamp vì chúng giống với DriveActivity tổng thể.