Google Drive 이벤트 구독

이 페이지에서는 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 files 리소스의 리소스 이름에 있는 ID입니다. 파일의 URL에서 또는 files.list 메서드를 사용하여 ID를 가져올 수 있습니다.

정기 결제를 승인하는 사용자에게는 정기 결제 내에서 이벤트 구독과 관련된 파일에 대한 권한이 있어야 합니다.
공유 드라이브 //googleapis.com/drive/v3/drives/DRIVE

여기서 DRIVE은 Drive API drives 리소스의 리소스 이름에 있는 ID입니다. 드라이브의 URL에서 또는 drives.list 메서드를 사용하여 ID를 가져올 수 있습니다.

구독은 사용자가 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 리소스 구독에 지원되는 이벤트 유형을 보여줍니다.

이벤트 유형 방식 리소스 데이터
파일 구독  
파일이 폴더 또는 공유 드라이브에 추가됩니다.

google.workspace.drive.file.v3.created

file

파일이 폴더 또는 공유 드라이브로 이동됩니다.

google.workspace.drive.file.v3.moved

file

파일이 수정되거나 새 버전이 업로드됩니다.

google.workspace.drive.file.v3.contentChanged

file

파일이 삭제됩니다.

google.workspace.drive.file.v3.deleted

file

파일이 휴지통으로 이동됩니다.

google.workspace.drive.file.v3.trashed

file

휴지통에서 파일이 삭제됩니다.

google.workspace.drive.file.v3.untrashed

file

파일에 액세스 제안이 생성됩니다.

google.workspace.drive.accessproposal.v3.created

accessproposal

파일에 대한 액세스 제안이 해결됩니다.

google.workspace.drive.accessproposal.v3.resolved

accessproposal

공유 드라이브 구독  
파일이 폴더 또는 공유 드라이브에 추가됩니다.

google.workspace.drive.file.v3.created

file

파일이 폴더 또는 공유 드라이브로 이동됩니다.

google.workspace.drive.file.v3.moved

file

파일이 수정되거나 새 버전이 업로드됩니다.

google.workspace.drive.file.v3.contentChanged

file

파일이 삭제됩니다.

google.workspace.drive.file.v3.deleted

file

파일이 휴지통으로 이동됩니다.

google.workspace.drive.file.v3.trashed

file

휴지통에서 파일이 삭제됩니다.

google.workspace.drive.file.v3.untrashed

file

파일에 액세스 제안이 생성됩니다.

google.workspace.drive.accessproposal.v3.created

accessproposal

파일에 대한 액세스 제안이 해결됩니다.

google.workspace.drive.accessproposal.v3.resolved

accessproposal

이벤트 데이터

이 섹션에서는 Drive의 이벤트에 대한 이벤트 데이터와 페이로드 예를 설명합니다.

Google Workspace 구독이 Drive에서 이벤트를 수신하면 data 필드에 이벤트 페이로드가 포함됩니다. 이 페이로드에는 변경된 Google Workspace 리소스에 관한 정보가 있습니다. 예를 들어 파일 이벤트를 구독한 경우 이러한 이벤트의 페이로드에는 변경된 file 리소스에 관한 정보가 포함됩니다.

이벤트 페이로드의 리소스 데이터

구독을 만들 때 페이로드에 리소스에 관한 세부정보를 포함할지 아니면 리소스 이름만 포함할지 지정할 수 있습니다. 예를 들어 Drive의 파일에 관한 이벤트를 수신하려면 이벤트 페이로드에서 수신할 files 리소스의 필드를 지정하면 됩니다.

다음 표에는 Drive 리소스 구독을 위한 JSON 페이로드의 예가 나와 있습니다. 파일 ID에는 files/^[01][0-9a-zA-Z_-]+$/로 구성된 문자, 숫자, 일부 특수문자가 포함됩니다. 예를 들면 files/1aaabbbAAABBB111222-_입니다. 정기 결제에서 수신하는 각 이벤트의 경우 페이로드가 이벤트의 data 필드에 표시됩니다.

이벤트 유형 JSON 페이로드

사용자가 폴더 또는 공유 드라이브에 파일을 추가합니다.

google.workspace.drive.file.v3.created

리소스 데이터를 포함합니다.
{
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
}
      
리소스 데이터를 제외합니다.
{
    "file": {
      "id": "FILE_ID"
    }
}
      

사용자가 파일을 폴더 또는 공유 드라이브로 이동합니다.

google.workspace.drive.file.v3.moved

리소스 데이터를 포함합니다.
{
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
}
      
리소스 데이터를 제외합니다.
{
    "file": {
      "id": "FILE_ID"
    }
}
      

사용자가 파일을 수정하거나 새 버전이 업로드됩니다.

google.workspace.drive.file.v3.contentChanged

리소스 데이터를 포함합니다.
{
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
}
      
리소스 데이터를 제외합니다.
{
    "file": {
      "id": "FILE_ID"
    }
}
      

사용자가 파일을 삭제합니다.

google.workspace.drive.file.v3.deleted

리소스 데이터를 포함합니다.
{
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
}
      
리소스 데이터를 제외합니다.
{
    "file": {
      "id": "FILE_ID"
    }
}
      

사용자가 파일을 휴지통에 넣습니다.

google.workspace.drive.file.v3.trashed

리소스 데이터를 포함합니다.
{
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
}
      
리소스 데이터를 제외합니다.
{
    "file": {
      "id": "FILE_ID"
    }
}
      

사용자가 휴지통에서 파일을 복원합니다.

google.workspace.drive.file.v3.untrashed

리소스 데이터를 포함합니다.
{
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
}
      
리소스 데이터를 제외합니다.
{
    "file": {
      "id": "FILE_ID"
    }
}
      

사용자가 파일에 대한 액세스 제안을 만듭니다.

google.workspace.drive.accessproposal.v3.created

리소스 데이터를 포함합니다.
{
    "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"
      }
    ]
}
      

사용자가 파일에 대한 액세스 제안을 해결합니다.

google.workspace.drive.accessProposal.v3.resolved

리소스 데이터를 포함합니다.
{
    "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"
      }
    ]
}
      

제한사항

  • DriveOptionsincludeDescendants 불리언 필드가 true인 경우 공유 드라이브 및 폴더의 Drive 구독은 이벤트를 트리거한 파일이 Drive 구독에 사용된 폴더 아래에 여러 레이어로 중첩되어 있더라도 항상 이벤트를 디스패치합니다.
  • 폴더에 대한 구독을 만들었더라도 사용자나 애플리케이션에 액세스 권한이 부여되지 않았을 수 있으므로 파일 계층 구조 내의 모든 이벤트를 수신하지 못할 수 있습니다. 이 경우 구독은 활성 상태로 유지되지만 액세스할 수 없는 리소스에 대한 이벤트는 수신되지 않습니다.
  • 구독은 모든 파일 및 폴더의 이벤트에 지원되지만 공유 드라이브의 루트 폴더에는 지원되지 않습니다. 구독은 공유 드라이브 내부의 파일 및 폴더에만 지원됩니다. 공유 드라이브의 루트 폴더에 직접 적용된 변경사항은 이벤트를 트리거하지 않습니다.
  • 구독을 승인하는 사용자에게는 구독하는 이벤트에 해당하는 파일에 대한 권한이 있어야 합니다.
  • 구독은 사용자가 Google Workspace 계정 또는 Google 계정을 통해 액세스할 수 있는 리소스의 이벤트만 수신합니다.