Tạo yêu cầu trong API hoạt động của Google Drive

Hướng dẫn này giải thích cách thực hiện các yêu cầu trong API Hoạt động trên Google Drive bằng cách sử dụng phương thức activity.query.

Khóa truy vấn

Có 2 cách để yêu cầu hoạt động: theo mục trong Google Drive hoặc mọi mục trong phân cấp thư mục.

  • itemName: Định dạng của khóa này là "items/ITEM_ID". Thông thường, đây là tệp trong Drive. Nếu bạn chỉ định một thư mục cho khoá này, thư mục sẽ hiển thị hoạt động cho thư mục đó như khi được tạo hoặc đổi tên.

  • ancestorName: Định dạng cho khoá này là "items/ITEM_ID" và phản hồi bao gồm hoạt động trên tất cả các mục trong cây con bên dưới thư mục này.

Khi không có khoá nào được đặt, tuỳ chọn này sẽ mặc định sử dụng ancestorName của "items/root" và hiển thị hoạt động của tất cả các mục trong Drive của bạn.

Phân trang

Trường pageSize cho phép bạn yêu cầu số lượng hoạt động gần đúng để trả về trong mỗi phản hồi. Số lượng hoạt động được trả về thực tế sẽ khác nhau, vì vậy, ứng dụng sẽ xử lý số lượng tùy ý trong phản hồi.

Giới hạn kích thước trang. Nếu ứng dụng của bạn cần nhiều hoạt động, hãy đưa ra nhiều yêu cầu bằng cách sử dụng tính năng phân trang thay vì đặt một giá trị lớn cho pageSize. Cụ thể, nếu có nhiều hoạt động hơn để tìm nạp so với nội dung có trong phản hồi, thì phản hồi cũng sẽ chứa nextPageToken. Để truy xuất thêm kết quả, hãy lặp lại cùng một yêu cầu nhưng thêm trường pageToken với giá trị nextPageToken từ phản hồi trước đó.

Hợp nhất

Các đối tượng Action thường được nhóm và trả về trong một tài nguyên DriveActivity duy nhất. Một số nhóm Action xảy ra ngẫu nhiên, chẳng hạn như di chuyển một mục vào thư mục dùng chung kích hoạt thay đổi quyền.

Bạn cũng có thể chỉ định ConsolidationStrategy (đôi khi gọi là tổng hợp hoặc tạo lô) trong yêu cầu. Điều này cho phép các nhóm đối tượng Action khác có liên quan, chẳng hạn như một số đối tượng chỉnh sửa một mục hoặc một Actor di chuyển nhiều tệp vào một thư mục Drive mới.

Mặc dù Action riêng lẻ có một Actor và một Target, nhưng sau khi nhóm, DriveActivity có thể có nhiều diễn viên và nhiều mục tiêu. Tuy nhiên, ngay cả sau khi nhóm, luôn có một hành động "chính" đại diện cho hành động đó hoặc là hành động quan trọng nhất trong tất cả hành động trong tài nguyên DriveActivity, tuỳ thuộc vào chiến lược hợp nhất được yêu cầu.

Kết quả là dù bạn đã bật tính năng hợp nhất hay chưa, nhiều ứng dụng chỉ có thể xem nội dung cấp cao nhất của tài nguyên DriveActivity (chẳng hạn như các diễn viên và mục tiêu tập thể trong primaryActionDetail) và bỏ qua các thao tác chi tiết trong phản hồi.

Bộ lọc

Bạn có thể hạn chế các hành động có thể được trả về trong tài nguyên DriveActivity bằng cách tạo một chuỗi filter trong yêu cầu activity.query. Có 2 trường được hỗ trợ: timedetail.action_detail_case.

Lọc theo thời gian

Để hạn chế các thao tác theo phạm vi thời gian, hãy chỉ định tên trường time bằng toán tử số trên giá trị ngày, kết hợp bằng dấu "AND" không bắt buộc. Hãy sử dụng mili giây kể từ ngày 1 tháng 1 năm 1970 hoặc định dạng RFC 3339, chẳng hạn như:

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

Lọc theo loại

Để hạn chế theo loại thao tác, hãy áp dụng tên trường detail.action_detail_case với toán tử "has" (:). Sử dụng giá trị duy nhất hoặc danh sách các loại thao tác được phép nằm trong dấu ngoặc đơn, phân tách bằng dấu cách. Để tìm danh sách các loại thao tác, hãy xem lại các đối tượng ActionDetail.

Để loại trừ một loại thao tác khỏi phản hồi, hãy thêm dấu gạch nối (-) vào đầu chuỗi bộ lọc.

Dưới đây là một số ví dụ về loại hành động:

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

Kết hợp

Bạn có thể kết hợp các điều kiện lọc này trong một chuỗi filter, chẳng hạn như:

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

Yêu cầu mẫu

Yêu cầu 10 hoạt động gần đây nhất cho một mục trên Drive:

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

Yêu cầu hoạt động hợp nhất cho mọi mục trên Drive bên dưới thư mục đối tượng cấp trên:

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

Yêu cầu tất cả hành động MOVERENAME trên một mục trên Drive:

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

Yêu cầu tất cả hoạt động kể từ ngày 1 tháng 1 năm 2018 theo giờ EST:

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

Yêu cầu tất cả hoạt động, ngoại trừ EDIT hành động, trong tháng 6 năm 2017 theo giờ UTC:

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