Google Drive Activity API에서 요청하기

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

쿼리 키

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

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

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

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

페이지로 나누기

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

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

통합

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

요청에 ConsolidationStrategy(집계 또는 일괄 처리라고도 함)를 지정할 수도 있습니다. 이렇게 하면 관련 Action 객체의 다른 그룹화(예: 한 항목을 수정하는 여러 배우 또는 하나의 Actor가 여러 파일을 새 Drive 폴더로 이동하는 등)를 사용할 수 있습니다.

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

따라서 통합 사용 설정 여부와 관계없이 많은 클라이언트가 DriveActivity 리소스의 최상위 콘텐츠 (예: primaryActionDetail 내의 집합적 행위자 및 대상)만 보고 응답에서 세부 작업을 무시하는 것으로 충분할 수 있습니다.

필터

activity.query 요청에 filter 문자열을 구성하여 DriveActivity 리소스에 반환될 수 있는 작업을 제한할 수 있습니다. 지원되는 필드 2개(time, detail.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

조합

이러한 필터링 조건은 다음과 같이 단일 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"
}