Google Drive Activity API에서 요청하기

이 가이드에서는 activity.query 메서드를 사용하여 Google Drive Activity API에서 요청하는 방법을 설명합니다.

쿼리 키

활동을 요청하는 방법에는 Google Drive 항목별로 요청하는 방법과 폴더 계층 아래의 모든 항목을 요청하는 방법이 있습니다.

  • itemName: 이 키의 형식은 'items/ITEM_ID'입니다. 일반적으로 Drive의 파일입니다. 이 키에 폴더를 지정하면 폴더가 생성되었거나 이름이 변경된 시점과 같은 폴더 활동이 표시됩니다.

  • ancestorName: 이 키의 형식은 'items/ITEM_ID'이며 응답에는 이 폴더 아래의 하위 트리에서 모든 항목에 대한 활동이 포함됩니다.

키가 설정되지 않으면 기본적으로 'items/root'의 ancestorName를 사용하고 Drive의 모든 항목에 대한 활동을 표시합니다.

페이지로 나누기

pageSize 필드를 사용하면 각 응답에서 반환할 대략적인 활동 수를 요청할 수 있습니다. 반환된 활동의 실제 수는 다르므로 앱은 응답에서 임의의 수량을 처리해야 합니다.

페이지 크기는 제한적입니다. 앱에 활동이 많이 필요한 경우 pageSize에 큰 값을 설정하는 대신 페이징을 사용하여 여러 번 요청합니다. 특히 가져올 활동이 응답에 포함된 것보다 많을 수 있는 경우 응답에 nextPageToken도 포함됩니다. 더 많은 결과를 검색하려면 동일한 요청을 반복하되 이전 응답의 값이 nextPageTokenpageToken 필드를 추가합니다.

통합

Action 객체는 단일 DriveActivity 리소스 내에 그룹화되어 반환되는 경우가 많습니다. 항목을 공유 폴더로 이동하여 권한 변경을 트리거하는 등 일부 Action 그룹은 자연스럽게 발생합니다.

요청에서 ConsolidationStrategy(집계 또는 일괄 처리라고도 함)를 지정할 수도 있습니다. 이렇게 하면 여러 행위자가 하나의 항목을 수정하거나 하나의 Actor가 여러 파일을 새 Drive 폴더로 이동하는 등 관련 Action 객체를 다른 방식으로 그룹화할 수 있습니다.

개별 Action에는 Actor 1개와 Target 1개가 있지만 그룹화 후에는 결과 DriveActivity에 여러 행위자와 여러 타겟이 있을 수 있습니다. 그러나 그룹화한 후에도 요청된 통합 전략에 따라 DriveActivity 리소스의 모든 작업을 대표하거나 가장 중요한 '기본' 작업이 항상 있습니다.

따라서 통합 여부와 관계없이 많은 클라이언트는 DriveActivity 리소스의 최상위 콘텐츠 (예: primaryActionDetail 내의 집합적 행위자 및 타겟)만 보고 응답의 세부 작업은 무시해도 충분할 수 있습니다.

필터

activity.query 요청에서 filter 문자열을 구성하여 DriveActivity 리소스에 반환될 수 있는 작업을 제한할 수 있습니다. 지원되는 필드는 timedetail.action_detail_case 두 가지입니다.

시간별 필터링

기간별로 작업을 제한하려면 날짜 값에 숫자 연산자를 사용하여 필드 이름 time를 지정하고 선택사항인 'AND'로 연결합니다. 1970년 1월 1일 이후 밀리초 또는 RFC 3339 형식을 사용합니다(예:

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

유형별 필터링

작업 유형별로 제한하려면 'has' 연산자 (:)와 함께 필드 이름 detail.action_detail_case를 적용합니다. 단일 값 또는 허용되는 작업 유형 목록을 괄호로 묶고 공백으로 구분하여 사용합니다. 작업 유형 목록을 찾으려면 ActionDetail 객체를 검토하세요.

응답에서 작업 유형을 제외하려면 필터 문자열 앞에 하이픈 (-)을 추가합니다.

다음은 몇 가지 작업 유형의 예입니다.

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

Combinations

이러한 필터링 조건은 단일 filter 문자열 내에 결합할 수 있습니다(예:

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

요청 예

Drive 항목의 최근 10개 활동을 요청합니다.

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

상위 폴더 아래의 모든 Drive 항목에 대해 통합 활동을 요청합니다.

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

Drive 항목에 대한 모든 MOVERENAME 작업을 요청합니다.

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

2018년 1월 1일(EST) 이후의 모든 활동을 요청합니다.

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

2017년 6월(UTC) 동안 EDIT 작업을 제외한 모든 활동을 요청합니다.

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