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

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, đưa ra ví dụ và cách diễn giải chúng.

Đối tượng

  • DriveActivity – Đây là tài nguyên chính do các truy vấn trả về cho API Hoạt động Drive. Nó mô tả một hoặc nhiều diễn viên thực hiện một hoặc nhiều hành động ảnh hưởng đến một hoặc mục tiêu khác.

  • TimestampTimeRange: Các mô tả tương ứng, hoặc một thời điểm duy nhất khi hoạt động 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 bất cứ lúc nào.

  • 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 đang đóng vai trò là một người dùng hoặc với tư cách chính họ hoặc khi được thực hiện bởi một người không thể xác định danh tính. Chiến lược phát hành đĩa đơn Thông báo Actor bao gồm 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. Lưu ý rằng nhiều loại hành động hỗ trợ nhiều loại mục tiêu. Cho Ví dụ: mặc dù Edit thường áp dụng cho các tệp trên Drive, nhưng các thao tác như RenameCreate cũng có thể áp dụng cho Drive thư mục và bộ nhớ dùng chung. Những 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, chẳng hạn như thư mục gốc của ổ đĩa hoặc thư mục gốc tài liệu chứa nhận xét về tệp.

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

  • ActionDetail – Đây là loại cụ thể và thông tin chi tiết về Action. Ví dụ: một Chi tiết hành động Move có vị trí nguồn và đích đến, cũng như PermissionChange chỉ định ai hiện có thể truy cập vào một tài liệu và bằng nội dung gì đặ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 hành động, chẳng hạn như người dùng đang 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. Thẻ này có thể được dùng với API Mọi người để có thêm thông tin.
  • ITEM_ID: Mã của mục trên Drive.
  • TITLE: tiêu đề của mục trên Drive.

Lưu ý rằng Action trong câu trả lờ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 vào những thời điểm giống nhau:

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 hành động tương tự được nhóm lại: một hành động Edit hành động cụ thể của 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. Có thể dùng với API Mọi người để có thêm thông tin.
  • ACCOUNT_ID_2: mã nhận dạng của người dùng thứ hai.
  • ITEM_ID: Mã của mục trên Drive.
  • TITLE: tiêu đề của mục trên Drive.

Lưu ý rằng các hành động trong câu trả lờ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 có thể chỉ sử dụng thông tin tóm tắt trong DriveActivity mà không xem xét từng hành động. Phản hồi cho biết rằng 2 người dùng đã chỉnh sửa một tệp nhất định trong một khoảng thời gian.

Một người dùng đã di chuyển 2 tệp vào một 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 .

"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. Thẻ này có thể được dùng với API Mọi người để có thêm thông tin.
  • ITEM_ID_1: Mã của mục đầu tiên trên Drive.
  • ITEM_ID_2: Mã 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 hành động trong câu trả lời này không bao gồm Actor hoặc TimeStamp vì chúng giống với DriveActivity tổng thể.