승인 관리

이 문서에서는 Google Drive API에서 승인을 관리하는 방법을 설명합니다.

사용자는 정식 승인 절차를 통해 Google Drive에서 문서를 전송하며, 이 절차를 사용하여 게시 전에 계약 검토 또는 공식 문서에 대한 승인을 받을 수 있습니다. 승인은 검토 상태(예: 진행 중, 승인됨 또는 거부됨)와 관련된 검토자를 모두 추적합니다. 승인은 콘텐츠를 검증하고 검토자 기록을 보관하는 데 유용합니다.

Drive에서 콘텐츠 승인을 만들고 관리할 수 있습니다. Google Drive API는 파일 승인과 함께 작동하는 approvals 리소스를 제공합니다. approvals 리소스의 메서드는 Drive, Google Docs 및 기타 Google Workspace 편집기 내의 항목에서 작동합니다. 검토자는 문서를 직접 승인하거나 거부하고 의견을 남길 수 있습니다.

시작하기 전에

  1. 파일에 canStartApproval 기능이 포함되어야 합니다 . 파일 기능을 확인하려면 get 메서드를 files 리소스에서 fileId 경로 매개변수를 사용하여 호출하고 fields 매개변수에서 canStartApproval 기능 필드를 사용합니다. 자세한 내용은 파일 기능 이해를 참고하세요.

    불리언 canStartApproval 기능은 다음과 같은 경우 false입니다.

    • 관리자 설정이 기능에 대한 액세스를 제한합니다.
    • Google Workspace 버전이 적합하지 않습니다.
    • 파일 소유자가 도메인 외부의 사용자입니다.
    • 사용자에게 파일에 대한 role=writer 권한이 없습니다.
  2. 검토자와 대상 파일을 수동으로 공유해야 합니다. Drive에서는 이 작업을 자동으로 실행하지 않습니다. 검토자에게 파일 액세스 권한이 없으면 승인 요청은 성공하지만 검토자는 알림을 받거나 파일을 볼 수 없습니다.

개념

다음 핵심 개념은 승인의 토대를 형성합니다.

승인 상태

문서 승인을 요청하면 승인 절차를 통해 모든 검토자가 문서에 대한 의견을 제공할 수 있습니다.

approvals 리소스에는 리소스가 요청될 때 승인 상태를 자세히 설명하는 Status 객체가 포함됩니다. 또한 특정 검토자가 승인한 응답을 자세히 설명하는 ReviewerResponse 객체도 포함됩니다. 각 검토자의 응답은 Response 객체로 표시됩니다.

승인 StatusIN_PROGRESS인 동안 파일 콘텐츠가 변경될 때 승인의 동작은 fileContentChangeBehavior 필드에 의해 결정됩니다.approvals 다음 동작을 적용할 수 있습니다.

  • RESET_APPROVAL: 승인 절차를 통해 모든 검토자가 동일한 버전의 콘텐츠를 승인할 수 있습니다. 검토자가 요청을 승인한 후 요청이 완료되기 전에 파일이 수정되면 검토자의 승인이 재설정되고 (응답이 NO_RESPONSE로 다시 설정됨) 검토자는 새 버전을 승인해야 합니다. 승인 상태가 APPROVED이면 파일이 잠겨 더 이상 수정할 수 없게 됩니다. 최종 승인 후 콘텐츠를 추가로 수정하면 현재 버전이 승인된 버전과 다르다는 배너가 문서에 표시됩니다. 이것이 기본 동작입니다.

  • NO_APPROVAL_ACTION: 승인이 대기 중인 동안 파일 콘텐츠를 수정해도 검토자 결정이 재설정되지 않습니다. 또한 최종 승인 시 파일이 잠기지 않습니다. 검토자는 승인이 완료되기 전 언제든지 자신의 APPROVED 결정을 대기 중 상태로 다시 설정할 수도 있습니다 (응답이 NO_RESPONSE로 다시 설정됨).

승인이 완료되면 이 동작은 더 이상 적용되지 않습니다.

승인 절차의 모든 작업은 승인 요청자 (승인을 요청하는 사용자)와 모든 검토자에게 전송되는 이메일 알림을 생성합니다. 또한 승인 활동 로그에도 추가됩니다.

모든 검토자가 승인을 승인해야 합니다. 승인을 거부하는 검토자는 완료된 상태를 DECLINED로 설정합니다.

승인이 완료되면 (상태가 APPROVED, CANCELLED 또는 DECLINED) 완료된 상태로 유지되며 요청자 또는 검토자가 상호작용할 수 없습니다. 상태가 IN_PROGRESS인 파일에 기존 승인이 없는 한 완료된 승인에 의견을 추가할 수 있습니다.

승인의 수명 주기

승인의 수명 주기입니다.
그림 1. 승인의 수명 주기

승인은 수명 주기 동안 여러 상태를 거칩니다. 그림 1은 승인 수명 주기의 대략적인 단계를 보여줍니다.

  1. 승인 시작. start 를 호출하여 승인 요청을 시작합니다. 그러면 statusIN_PROGRESS로 설정됩니다.

  2. 승인이 대기 중. 승인이 대기 중인 동안 (statusIN_PROGRESS로 설정됨) 요청자와 검토자 모두 승인과 상호작용할 수 있습니다. `commentcomment`를 추가할 수 있고, 요청자는 검토자를 `reassignreassign`할 수 있으며, 한 명 이상의 검토자가 요청을 `approveapprove`할 수 있습니다.

  3. 승인이 완료된 상태. 모든 검토자가 요청을 승인하거나, 요청자가 요청을 cancel하기로 선택하거나, 검토자가 요청을 decline하기로 선택하면 승인이 완료된 상태 (statusAPPROVED, CANCELLED 또는 DECLINED로 설정됨)로 전환됩니다.

필드 매개변수 사용

승인 세부정보를 가져오려면 fields 시스템 매개변수 를 사용하여 원하는 필드를 명시적으로 지정해야 합니다.approvals 다른 리소스와 달리 approvals 리소스의 메서드는 fields 매개변수가 생략된 경우 기본 필드 집합을 반환하지 않습니다. 자세한 내용은 특정 필드 반환을 참고하세요.

승인 시작 및 관리

approvals 리소스를 사용하여 Drive API로 승인을 시작 하고 관리할 수 있습니다. 이러한 메서드는 파일 메타데이터 작성을 허용하는 기존 OAuth 2.0 Drive API 범위와 함께 작동합니다. 자세한 내용은 Google Drive API 범위 선택하기를 참고하세요.

승인 시작

파일에 대한 새 승인을 시작하려면 start 메서드를 approvals 리소스에서 사용하고 fileId 경로 매개변수를 포함합니다.

요청 본문은 파일을 검토하도록 할당된 검토자의 이메일 주소가 포함된 문자열 배열인 필수 reviewerEmails 필드로 구성됩니다. 각 검토자 이메일 주소는 Google 계정과 연결되어야 하며, 그렇지 않으면 요청이 실패합니다. 또한 다음과 같은 4개의 선택적 필드가 제공됩니다.

  • dueTime: RFC 3339 형식의 승인 마감일입니다.
  • lockFile: 승인을 시작할 때 파일을 잠글지 여부를 나타내는 불리언입니다. 이렇게 하면 승인 절차 중에 사용자가 파일을 수정하지 못하도록 차단됩니다. role=writer 권한이 있는 사용자는 이 잠금을 삭제할 수 있습니다.
  • message: 검토자에게 전송되는 맞춤 메시지입니다.
  • fileContentChangeBehavior: 파일 콘텐츠가 변경될 때 승인의 동작입니다. 지원되는 값은 다음과 같습니다.
    • RESET_APPROVAL: (기본값) 승인이 진행 중인 동안 콘텐츠가 변경되면 APPROVED의 검토자 응답을 NO_RESPONSE로 재설정합니다. 승인이 APPROVED 상태로 완료되면 파일이 잠깁니다.
    • NO_APPROVAL_ACTION: 콘텐츠가 변경될 때 검토자 응답을 재설정하지 않으며 승인이 완료될 때 파일을 잠그지 않습니다.

응답 본문에는 approvals 리소스의 인스턴스가 포함되며 승인을 요청한 사용자인 initiator 필드가 포함됩니다. 승인 Status이(가) IN_PROGRESS로 설정됩니다.

StatusIN_PROGRESS인 기존 승인이 있으면 start 메서드가 실패합니다. 파일에 기존 승인이 없거나 기존 승인이 완료된 상태 (APPROVED, CANCELLED 또는 DECLINED 상태)인 경우에만 승인을 시작할 수 있습니다.

curl

curl -X POST \
  'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals:start' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "reviewerEmails": [
     "reviewer1@example.com",
     "reviewer2@example.com"
    ],
    "dueTime": "2026-04-01T15:01:23Z",
    "lockFile": true,
    "message": "Please review this file for approval.",
    "fileContentChangeBehavior": "RESET_APPROVAL"
 }'

다음을 바꿉니다.

  • FILE_ID: 승인이 진행 중인 파일의 ID입니다.
  • ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.

승인에 의견 추가

승인에 의견을 추가하려면 comment 메서드를 approvals 리소스에서 사용하고 fileIdapprovalId 경로 매개변수를 포함합니다.

요청 본문은 승인에 추가하려는 의견이 포함된 문자열인 message필수 필드로 구성됩니다.

응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다. 메시지는 승인 요청자와 검토자에게 알림으로 전송되며 승인 활동 로그에도 포함됩니다.

curl

curl -X POST \
  'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals/APPROVAL_ID:comment' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "message": "The required comment on the approval."
 }'

다음을 바꿉니다.

  • FILE_ID: 승인이 진행 중인 파일의 ID입니다.
  • APPROVAL_ID: 승인 ID입니다.
  • ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.

승인 시 검토자 재할당

승인 시 검토자를 재할당하려면 reassign 메서드를 approvals 리소스에서 사용하고 fileIdapprovalId 경로 매개변수를 포함합니다.

reassign 메서드를 사용하면 승인 요청자 또는 role=writer 권한이 있는 사용자가 ReviewerResponse 객체에서 검토자를 추가하거나 교체할 수 있습니다. approvals 리소스의 role=reader 권한이 있는 사용자는 자신에게 할당된 승인만 재할당할 수 있습니다. 이렇게 하면 사용자가 더 유능한 검토자인 다른 사용자에게 요청을 재할당할 수 있습니다.

검토자는 StatusIN_PROGRESS이고 재할당되는 검토자의 response 필드가 NO_RESPONSE로 설정된 경우에만 재할당될 수 있습니다.

승인 시 검토자를 삭제할 수는 없습니다. 검토자를 삭제해야 하는 경우 승인을 취소하고 새 승인을 시작해야 합니다.

요청 본문은 선택적 addReviewersreplaceReviewers 필드로 구성됩니다. 각 필드에는 AddReviewerReplaceReviewer 의 반복 객체가 있으며, 각 객체에는 추가할 검토자 1명 또는 교체할 검토자 2명이 포함됩니다. 새 검토자에게 전송할 의견이 포함된 선택적 message 필드를 추가할 수도 있습니다.

응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다. 메시지는 새 검토자에게 알림으로 전송되며 승인 활동 로그에도 포함됩니다.

curl

curl -X POST \
  'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals/APPROVAL_ID:reassign' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "addReviewers": [
    {
        "addedReviewerEmail": "new_reviewer@example.com"
    }
    ],
    "replaceReviewers": [
    {
        "addedReviewerEmail": "replacement_reviewer@example.com",
        "removedReviewerEmail": "old_reviewer@example.com"
    }
    ],
    "message": "Reassigning reviewers for this approval request."
 }'

다음을 바꿉니다.

  • FILE_ID: 승인이 진행 중인 파일의 ID입니다.
  • APPROVAL_ID: 승인 ID입니다.
  • ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.

승인 취소

승인을 취소하려면 cancel 리소스에서 approvals 메서드를 사용하고 fileIdapprovalId 경로 매개변수를 포함합니다.

cancel 메서드는 승인 StatusIN_PROGRESS인 동안 승인 요청자 또는 role=writer 권한이 있는 사용자만 호출할 수 있습니다.

요청 본문은 승인 취소와 함께 제공되는 메시지가 포함된 문자열인 선택적 message 필드로 구성됩니다.

응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다. 메시지는 알림으로 전송되며 승인 활동 로그에도 포함됩니다. 승인 StatusCANCELLED로 설정되고 완료된 상태입니다.

curl

curl -X POST \
  'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals/APPROVAL_ID:cancel' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "message": "The optional reason for cancelling this approval request."
 }'

다음을 바꿉니다.

  • FILE_ID: 승인이 진행 중인 파일의 ID입니다.
  • APPROVAL_ID: 승인 ID입니다.
  • ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.

승인 거부

승인을 거부하려면 decline 리소스에서 approvals 메서드를 사용하고 fileIdapprovalId 경로 매개변수를 포함합니다.

decline 메서드는 승인 StatusIN_PROGRESS인 동안에만 호출할 수 있습니다.

요청 본문은 승인 거부와 함께 제공되는 메시지가 포함된 문자열인 선택적 message 필드로 구성됩니다.

응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다. 메시지는 알림으로 전송되며 승인 활동 로그에도 포함됩니다. 요청 사용자의 ReviewerResponse 객체의 response 필드가 DECLINED로 설정됩니다. 또한 승인 StatusDECLINED로 설정되고 완료된 상태입니다.

curl

curl -X POST \
  'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals/APPROVAL_ID:decline' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "message": "The optional reason for declining this approval request."
 }'

다음을 바꿉니다.

  • FILE_ID: 승인이 진행 중인 파일의 ID입니다.
  • APPROVAL_ID: 승인 ID입니다.
  • ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.

승인 승인

승인을 승인하려면 approve 메서드를 approvals 리소스에서 사용하고 fileIdapprovalId 경로 매개변수를 포함합니다.

approve 메서드는 승인 StatusIN_PROGRESS인 동안에만 호출할 수 있습니다.

요청 본문은 승인과 함께 제공되는 메시지가 포함된 문자열인 선택적 message 필드로 구성됩니다.

응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다. 메시지는 알림으로 전송되며 승인 활동 로그에도 포함됩니다. 요청 사용자의 ReviewerResponse 객체의 response 필드가 APPROVED로 설정됩니다. 또한 마지막으로 필요한 검토자 응답인 경우 승인 StatusAPPROVED로 설정되고 완료된 상태입니다.

curl

curl -X POST \
  'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals/APPROVAL_ID:approve' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "message": "The optional reason for approving this approval request."
 }'

다음을 바꿉니다.

  • FILE_ID: 승인이 진행 중인 파일의 ID입니다.
  • APPROVAL_ID: 승인 ID입니다.
  • ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.

기존 승인 찾기

approvals 리소스를 사용하여 Drive API로 승인 상태를 가져오고 나열할 수도 있습니다.

파일에 대한 승인을 보려면 파일의 메타데이터를 읽을 권한이 있어야 합니다. 자세한 내용은 역할 및 권한을 참고하세요.

승인 받기

파일에 대한 승인을 받으려면 get 메서드를 approvals 리소스에서 fileIdapprovalId 경로 매개변수와 함께 사용합니다. 승인 ID를 모르는 경우 승인 을 list 메서드를 사용하여 나열할 수 있습니다.

응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다.

curl

curl -X GET \
  'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals/APPROVAL_ID' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Accept: application/json'

다음을 바꿉니다.

  • FILE_ID: 승인이 진행 중인 파일의 ID입니다.
  • APPROVAL_ID: 승인 ID입니다.
  • ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.

승인 나열

파일에 대한 승인을 나열하려면 list 리소스approvals에서 메서드를 호출하고 경로 매개변수fileId를 포함합니다.

응답 본문은 파일에 대한 승인 목록으로 구성됩니다. items 필드에는 approvals 리소스 형식으로 각 승인에 대한 정보가 포함됩니다.

다음 쿼리 매개변수를 전달하여 승인의 페이지 나누기를 맞춤설정하거나 승인을 필터링할 수도 있습니다.

  • pageSize: 페이지당 반환할 최대 승인 수입니다. pageSize를 설정하지 않으면 서버에서 최대 100개의 승인을 반환합니다.

  • pageToken: 이전 목록 호출에서 받은 페이지 토큰입니다. 이 토큰은 후속 페이지를 가져오는 데 사용됩니다. 이전 응답의 nextPageToken 값으로 설정해야 합니다.

curl

curl -X GET \
  'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals?pageSize=10&fields=nextPageToken,items(approvalId,status)' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Accept: application/json'

다음을 바꿉니다.

  • FILE_ID: 승인이 진행 중인 파일의 ID입니다.
  • ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.