이 페이지에서는 Google Workspace Events API를 사용하여 앱이 구독할 수 있는 Google Drive 이벤트를 설명합니다. 필요한 이벤트 유형을 결정한 후 구독을 만들어 Drive에서 이벤트를 수신하기 시작합니다.
Drive용 앱 개발에 대해 자세히 알아보려면 Google Drive API 개요를 참고하세요.
지원되는 Drive 이벤트
Google Workspace 구독을 사용하면 Drive에서 다음과 같은 유형의 변경사항에 관한 이벤트를 수신할 수 있습니다.
- 파일은 다음과 같습니다.
- 폴더 또는 공유 드라이브에 추가됨
- 폴더 또는 공유 드라이브로 이동됨
- 수정된 버전 또는 새 버전이 업로드됩니다.
- 휴지통에 있거나 휴지통에서 삭제됨
- 파일에서 액세스 제안이 생성되거나 해결됩니다.
이벤트를 모니터링할 수 있는 리소스
이벤트를 수신하려면 모니터링할 Drive 리소스를 지정해야 하며, 이를 구독의 타겟 리소스라고 합니다.
Google Workspace Events API는 Drive에 대해 다음 타겟 리소스를 지원합니다.
타겟 리소스 | 방식 | 제한사항 (해당하는 경우) |
---|---|---|
파일 | //googleapis.com/drive/v3/files/FILE
여기서 FILE은 Drive API |
정기 결제를 승인하는 사용자에게는 정기 결제 내에서 이벤트 구독과 관련된 파일에 대한 권한이 있어야 합니다. |
공유 드라이브 | //googleapis.com/drive/v3/drives/DRIVE
여기서 DRIVE은 Drive API |
구독은 사용자가 Google Workspace 계정 또는 Google 계정을 통해 회원인 공유 드라이브의 항목에 대한 이벤트만 수신합니다. |
구독 생성 이벤트 유형
드라이브 리소스에 대한 구독을 만들 때 eventTypes[]
필드를 사용하여 수신할 이벤트 유형을 지정합니다. 이벤트 유형은 CloudEvents 사양에 따라 형식이 지정됩니다(예: google.workspace.APPLICATION.RESOURCE.VERSION.ACTION
).
예를 들어 폴더 또는 공유 드라이브에서 파일이 생성되는 것에 관한 이벤트를 수신하려면 파일을 타겟 리소스로 지정하고 이벤트 유형을 google.workspace.drive.file.v3.created
로 지정합니다. 파일에 액세스 제안이 생성되는 것에 관한 이벤트를 수신하려면 액세스 제안을 타겟 리소스로 지정하고 이벤트 유형을 google.workspace.drive.accessproposal.v3.created
로 지정합니다. 이벤트 작동 방식에 대해 자세히 알아보려면 Google Workspace 이벤트 구조를 참고하세요.
다음 표에서는 Drive 리소스 구독에 지원되는 이벤트 유형을 보여줍니다.
이벤트 유형 | 방식 | 리소스 데이터 | ||
---|---|---|---|---|
파일 구독 | ||||
파일이 폴더 또는 공유 드라이브에 추가됩니다. |
|
|
||
파일이 폴더 또는 공유 드라이브로 이동됩니다. |
|
|
||
파일이 수정되거나 새 버전이 업로드됩니다. |
|
|
||
파일이 삭제됩니다. |
|
|
||
파일이 휴지통으로 이동됩니다. |
|
|
||
휴지통에서 파일이 삭제됩니다. |
|
|
||
파일에 액세스 제안이 생성됩니다. |
|
|
||
파일에 대한 액세스 제안이 해결됩니다. |
|
|
||
공유 드라이브 구독 | ||||
파일이 폴더 또는 공유 드라이브에 추가됩니다. |
|
|
||
파일이 폴더 또는 공유 드라이브로 이동됩니다. |
|
|
||
파일이 수정되거나 새 버전이 업로드됩니다. |
|
|
||
파일이 삭제됩니다. |
|
|
||
파일이 휴지통으로 이동됩니다. |
|
|
||
휴지통에서 파일이 삭제됩니다. |
|
|
||
파일에 액세스 제안이 생성됩니다. |
|
|
||
파일에 대한 액세스 제안이 해결됩니다. |
|
|
이벤트 데이터
이 섹션에서는 Drive의 이벤트에 대한 이벤트 데이터와 페이로드 예를 설명합니다.
Google Workspace 구독이 Drive에서 이벤트를 수신하면 data
필드에 이벤트 페이로드가 포함됩니다. 이 페이로드에는 변경된 Google Workspace 리소스에 관한 정보가 있습니다. 예를 들어 파일 이벤트를 구독한 경우 이러한 이벤트의 페이로드에는 변경된 file
리소스에 관한 정보가 포함됩니다.
이벤트 페이로드의 리소스 데이터
구독을 만들 때 페이로드에 리소스에 관한 세부정보를 포함할지 아니면 리소스 이름만 포함할지 지정할 수 있습니다. 예를 들어 Drive의 파일에 관한 이벤트를 수신하려면 이벤트 페이로드에서 수신할 files
리소스의 필드를 지정하면 됩니다.
다음 표에는 Drive 리소스 구독을 위한 JSON 페이로드의 예가 나와 있습니다. 파일 ID에는 files/^[01][0-9a-zA-Z_-]+$/
로 구성된 문자, 숫자, 일부 특수문자가 포함됩니다. 예를 들면 files/1aaabbbAAABBB111222-_
입니다. 정기 결제에서 수신하는 각 이벤트의 경우 페이로드가 이벤트의 data
필드에 표시됩니다.
예 | 이벤트 유형 | JSON 페이로드 |
---|---|---|
사용자가 폴더 또는 공유 드라이브에 파일을 추가합니다. |
|
리소스 데이터를 포함합니다.
{ "file": { "id": "FILE_ID", "parent": "PARENT_ID", "version": "63", "mimeType": "application/vnd.google-apps.document" } } 리소스 데이터를 제외합니다.
{ "file": { "id": "FILE_ID" } } |
사용자가 파일을 폴더 또는 공유 드라이브로 이동합니다. |
|
리소스 데이터를 포함합니다.
{ "file": { "id": "FILE_ID", "parent": "PARENT_ID", "version": "63", "mimeType": "application/vnd.google-apps.document" } } 리소스 데이터를 제외합니다.
{ "file": { "id": "FILE_ID" } } |
사용자가 파일을 수정하거나 새 버전이 업로드됩니다. |
|
리소스 데이터를 포함합니다.
{ "file": { "id": "FILE_ID", "parent": "PARENT_ID", "version": "63", "mimeType": "application/vnd.google-apps.document" } } 리소스 데이터를 제외합니다.
{ "file": { "id": "FILE_ID" } } |
사용자가 파일을 삭제합니다. |
|
리소스 데이터를 포함합니다.
{ "file": { "id": "FILE_ID", "parent": "PARENT_ID", "version": "63", "mimeType": "application/vnd.google-apps.document" } } 리소스 데이터를 제외합니다.
{ "file": { "id": "FILE_ID" } } |
사용자가 파일을 휴지통에 넣습니다. |
|
리소스 데이터를 포함합니다.
{ "file": { "id": "FILE_ID", "parent": "PARENT_ID", "version": "63", "mimeType": "application/vnd.google-apps.document" } } 리소스 데이터를 제외합니다.
{ "file": { "id": "FILE_ID" } } |
사용자가 휴지통에서 파일을 복원합니다. |
|
리소스 데이터를 포함합니다.
{ "file": { "id": "FILE_ID", "parent": "PARENT_ID", "version": "63", "mimeType": "application/vnd.google-apps.document" } } 리소스 데이터를 제외합니다.
{ "file": { "id": "FILE_ID" } } |
사용자가 파일에 대한 액세스 제안을 만듭니다. |
|
리소스 데이터를 포함합니다.
{ "accessProposal": [ { "file_id": "FILE_ID", "proposalId": "PROPOSAL_ID", "recipientEmailAddress": "63", "requesterEmailAddress": "application/vnd.google-apps.document", "requestMessage": "grant me access to this file", "rolesAndViews": [ { "role": "writer", "view": "published" } ] } ] } 리소스 데이터를 제외합니다.
{ "accessProposal": [ { "proposalId": "PROPOSAL_ID" } ] } |
사용자가 파일에 대한 액세스 제안을 해결합니다. |
|
리소스 데이터를 포함합니다.
{ "accessProposal": [ { "file_id": "FILE_ID", "proposalId": "PROPOSAL_ID", "recipientEmailAddress": "63", "requesterEmailAddress": "application/vnd.google-apps.document", "requestMessage": "resolve access to this file", "rolesAndViews": [ { "role": "writer", "view": "published" } ] } ] } 리소스 데이터를 제외합니다.
{ "accessProposal": [ { "proposalId": "PROPOSAL_ID" } ] } |
제한사항
DriveOptions
의includeDescendants
불리언 필드가true
인 경우 공유 드라이브 및 폴더의 Drive 구독은 이벤트를 트리거한 파일이 Drive 구독에 사용된 폴더 아래에 여러 레이어로 중첩되어 있더라도 항상 이벤트를 디스패치합니다.- 폴더에 대한 구독을 만들었더라도 사용자나 애플리케이션에 액세스 권한이 부여되지 않았을 수 있으므로 파일 계층 구조 내의 모든 이벤트를 수신하지 못할 수 있습니다. 이 경우 구독은 활성 상태로 유지되지만 액세스할 수 없는 리소스에 대한 이벤트는 수신되지 않습니다.
- 구독은 모든 파일 및 폴더의 이벤트에 지원되지만 공유 드라이브의 루트 폴더에는 지원되지 않습니다. 구독은 공유 드라이브 내부의 파일 및 폴더에만 지원됩니다. 공유 드라이브의 루트 폴더에 직접 적용된 변경사항은 이벤트를 트리거하지 않습니다.
- 구독을 승인하는 사용자에게는 구독하는 이벤트에 해당하는 파일에 대한 권한이 있어야 합니다.
- 구독은 사용자가 Google Workspace 계정 또는 Google 계정을 통해 액세스할 수 있는 리소스의 이벤트만 수신합니다.