이 문서에서는 Google Drive API에서 승인을 관리하는 방법을 설명합니다.
사용자는 정식 승인 절차를 통해 Google Drive에서 문서를 전송할 수 있습니다. 이 절차를 사용하여 계약 검토 또는 공식 문서에 대한 승인을 게시 전에 받을 수 있습니다. 승인은 검토 상태(예: 진행 중, 승인됨 또는 거부됨)와 관련 검토자를 모두 추적합니다. 승인은 콘텐츠를 검증하고 검토자를 기록하는 데 유용합니다.
Drive에서 콘텐츠 승인을 만들고 관리할 수 있습니다. Google Drive API는 파일 승인과 함께 작동하는 approvals 리소스를 제공합니다. approvals 리소스의 메서드는 Drive, Google Docs, 기타 Google Workspace 편집기의 항목에서 작동합니다. 검토자는 문서를 바로 승인, 거부하거나 의견을 남길 수 있습니다.
시작하기 전에
파일에
canStartApproval기능이 포함되어야 합니다 . 파일 기능을 확인하려면fileId경로 매개변수를 사용하여files리소스에서get메서드를 호출하고fields매개변수에서canStartApproval기능 필드를 사용합니다. 자세한 내용은 파일 기능 이해하기를 참고하세요.다음과 같은 경우 불리언
canStartApproval기능이false입니다.- 관리자 설정으로 인해 기능 액세스가 제한됩니다.
- Google Workspace 버전이 적합하지 않습니다.
- 도메인 외부의 사용자가 파일을 소유하고 있습니다.
- 사용자에게 파일에 대한
role=writer권한이 없습니다.
타겟 파일을 검토자와 수동으로 공유해야 합니다. Drive에서는 자동으로 이 작업을 수행하지 않습니다. 검토자에게 파일 액세스 권한이 없는 경우 승인 요청은 성공하지만 알림을 받지 못하거나 파일을 볼 수 없습니다.
개념
다음 주요 개념은 승인의 기반을 형성합니다.
승인 상태
문서 승인을 요청하면 승인 절차를 통해 모든 검토자가 문서에 대한 의견을 제공할 수 있습니다.
approvals 리소스에는 리소스가 요청될 때 승인 상태를 자세히 설명하는 Status 객체가 포함됩니다. 또한 특정 검토자가 승인한 내용에 대한 응답을 자세히 설명하는 ReviewerResponse 객체도 포함됩니다. 각 검토자의 응답은 Response 객체로 표현됩니다.
승인 Status가 IN_PROGRESS인 동안 파일 콘텐츠가 변경될 때 승인 동작은 approvals 리소스의 fileContentChangeBehavior 필드에 따라 결정됩니다. 다음 동작을 적용할 수 있습니다.
RESET_APPROVAL: 승인 절차를 통해 모든 검토자가 동일한 버전의 콘텐츠를 승인합니다. 검토자가 요청을 승인한 후 요청이 완료되기 전에 파일을 수정하면 검토자의 승인이 재설정되고 (응답이NO_RESPONSE로 다시 설정됨) 검토자가 새 버전을 승인해야 합니다. 승인 상태가APPROVED이면 파일이 잠겨 더 이상 수정할 수 없습니다. 최종 승인 후 콘텐츠를 추가로 수정하면 현재 버전이 승인된 버전과 다르다는 배너가 문서에 표시됩니다. 이것이 기본 동작입니다.NO_APPROVAL_ACTION: 승인이 대기 중인 동안 파일 콘텐츠를 수정해도 검토자 결정이 재설정되지 않습니다. 또한 최종 승인 시 파일이 잠기지 않습니다. 검토자는 승인이 완료되기 전 언제든지 자신의APPROVED결정을 대기 상태로 재설정할 수도 있습니다 (응답이NO_RESPONSE으로 다시 설정됨).
승인이 완료되면 이 동작이 더 이상 적용되지 않습니다.
승인 프로세스의 모든 작업은 승인 요청자 (승인을 요청하는 사용자)와 모든 검토자에게 전송되는 이메일 알림을 생성합니다. 승인 활동 로그에도 추가됩니다.
모든 검토자가 승인을 승인해야 합니다. 승인을 거부하는 검토자는 완료 상태를 DECLINED로 설정합니다.
승인이 완료되면 (상태가 APPROVED, CANCELLED 또는 DECLINED임) 완료된 상태로 유지되며 시작자나 검토자가 상호작용할 수 없습니다. 상태가 IN_PROGRESS인 파일에 기존 승인이 없는 경우 완료된 승인에 댓글을 추가할 수 있습니다.
승인의 수명 주기
승인은 수명 주기 동안 여러 상태를 거칩니다. 그림 1은 승인 수명 주기의 대략적인 단계를 보여줍니다.
승인 시작
start을 호출하여 승인 요청을 시작합니다. 그러면status이IN_PROGRESS로 설정됩니다.승인이 대기 중입니다. 승인이 대기 중인 동안 (
status이IN_PROGRESS로 설정됨) 시작자와 검토자 모두와 상호작용할 수 있습니다.comment를 추가할 수 있고, 시작자는 검토자를reassign할 수 있으며, 한 명 이상의 검토자가 요청을approve할 수 있습니다.승인이 완료 상태입니다. 모든 검토자가 요청을 승인하거나, 요청자가 요청을
cancel하기로 선택하거나, 검토자가 요청을decline하기로 선택하면 승인이 완료 상태 (status이APPROVED,CANCELLED또는DECLINED로 설정됨)가 됩니다.
fields 매개변수 사용
응답에서 반환할 필드를 지정하려면 approvals 리소스의 메서드를 사용하여 fields 시스템 매개변수를 설정하면 됩니다. fields 매개변수를 생략하면 서버는 메서드에 특정한 기본 필드 집합을 반환합니다. 다른 필드를 반환하려면 특정 필드 반환을 참고하세요.
승인 시작 및 관리
approvals 리소스를 사용하여 Drive API로 승인을 시작하고 관리할 수 있습니다. 이러한 메서드는 파일 메타데이터 쓰기를 허용하는 기존 OAuth 2.0 Drive API 범위와 함께 작동합니다. 자세한 내용은 Google Drive API 범위 선택하기를 참고하세요.
승인 시작
파일에 대한 새 승인을 시작하려면 approvals 리소스에서 start 메서드를 사용하고 fileId 경로 매개변수를 포함합니다.
요청 본문은 파일을 검토하도록 할당된 검토자의 이메일 주소를 포함하는 문자열 배열인 필수 reviewerEmails 필드로 구성됩니다. 각 검토자 이메일 주소가 Google 계정과 연결되어 있어야 요청이 실패하지 않습니다.
또한 다음과 같은 네 가지 선택적 필드가 제공됩니다.
dueTime: RFC 3339 형식의 승인 기한입니다.lockFile: 승인을 시작할 때 파일을 잠글지 여부를 나타내는 불리언입니다. 이렇게 하면 승인 절차 중에 사용자가 파일을 수정할 수 없습니다.role=writer권한이 있는 사용자는 이 잠금을 삭제할 수 있습니다.message: 검토자에게 전송되는 맞춤 메시지입니다.fileContentChangeBehavior: 파일 콘텐츠가 변경될 때 승인 동작입니다. 지원되는 값은 다음과 같습니다.RESET_APPROVAL: (기본값) 승인이 진행되는 동안 콘텐츠가 변경되면APPROVED의 검토자 응답을NO_RESPONSE로 재설정합니다. 승인이 완료되고 상태가APPROVED가 되면 파일이 잠깁니다.NO_APPROVAL_ACTION: 콘텐츠가 변경될 때 검토자 응답을 재설정하지 않고 승인이 완료될 때 파일을 잠그지 않습니다.
응답 본문에는 approvals 리소스의 인스턴스가 포함되며, 여기에는 승인을 요청한 사용자인 initiator 필드가 포함됩니다. 승인 Status이 IN_PROGRESS로 설정됩니다.
IN_PROGRESS의 Status가 있는 기존 승인이 있는 경우 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 토큰입니다.
승인에 대한 의견
승인에 댓글을 달려면 approvals 리소스에서 comment 메서드를 사용하고 fileId 및 approvalId 경로 매개변수를 포함합니다.
요청 본문은 승인에 추가할 댓글이 포함된 문자열인 필수 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 토큰입니다.
승인 시 검토자 재할당
승인에서 검토자를 재할당하려면 approvals 리소스에서 reassign 메서드를 사용하고 fileId 및 approvalId 경로 매개변수를 포함합니다.
reassign 메서드를 사용하면 승인 시작자 (또는 role=writer 권한이 있는 사용자)가 approvals 리소스의 ReviewerResponse 객체에서 검토자를 추가하거나 교체할 수 있습니다. role=reader 권한이 있는 사용자는 자신에게 할당된 승인만 재할당할 수 있습니다. 이를 통해 사용자는 요청을 더 유능한 검토자에게 다시 할당할 수 있습니다.
검토자는 Status이 IN_PROGRESS이고 재할당되는 검토자의 response 필드가 NO_RESPONSE로 설정된 경우에만 재할당될 수 있습니다.
승인에서 검토자를 삭제할 수는 없습니다. 검토자를 삭제해야 하는 경우 승인을 취소하고 새 승인을 시작해야 합니다.
요청 본문은 선택사항인 addReviewers 및 replaceReviewers 필드로 구성됩니다. 각 필드에는 AddReviewer 및 ReplaceReviewer의 반복 객체가 있으며, 각 객체에는 추가할 검토자 한 명 또는 교체할 검토자 한 쌍이 포함됩니다.
새 검토자에게 보낼 의견이 포함된 선택사항인 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 토큰입니다.
승인 취소
승인을 취소하려면 approvals 리소스에서 cancel 메서드를 사용하고 fileId 및 approvalId 경로 매개변수를 포함합니다.
cancel 메서드는 승인 Status이 IN_PROGRESS인 동안 승인 시작자 (또는 role=writer 권한이 있는 사용자)만 호출할 수 있습니다.
요청 본문은 승인 취소에 포함할 메시지가 포함된 문자열인 선택적 message 필드로 구성됩니다.
응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다. 메시지는 알림으로 전송되며 승인 활동 로그에도 포함됩니다.
승인 Status가 CANCELLED로 설정되고 완료된 상태입니다.
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 토큰입니다.
승인 거부
승인을 거부하려면 approvals 리소스에서 decline 메서드를 사용하고 fileId 및 approvalId 경로 매개변수를 포함합니다.
decline 메서드는 승인 Status이 IN_PROGRESS인 동안에만 호출할 수 있습니다.
요청 본문은 승인 거부에 포함될 메시지가 포함된 문자열인 선택적 message 필드로 구성됩니다.
응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다. 메시지는 알림으로 전송되며 승인 활동 로그에도 포함됩니다.
요청하는 사용자의 ReviewerResponse 객체의 response 필드가 DECLINED로 설정됩니다. 또한 승인 Status이 DECLINED로 설정되고 완료된 상태입니다.
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 토큰입니다.
승인 승인
승인을 승인하려면 approvals 리소스에서 approve 메서드를 사용하고 fileId 및 approvalId 경로 매개변수를 포함합니다.
approve 메서드는 승인 Status이 IN_PROGRESS인 동안에만 호출할 수 있습니다.
요청 본문은 승인에 첨부할 메시지가 포함된 문자열인 선택적 message 필드로 구성됩니다.
응답 본문에는 approvals 리소스의 인스턴스가 포함됩니다. 메시지는 알림으로 전송되며 승인 활동 로그에도 포함됩니다.
요청하는 사용자의 ReviewerResponse 객체의 response 필드가 APPROVED로 설정됩니다. 또한 이것이 마지막 필수 검토자 응답인 경우 승인 Status이 APPROVED로 설정되고 완료 상태가 됩니다.
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를 통해 승인 상태를 가져오고 나열할 수도 있습니다.
파일의 승인을 보려면 파일의 메타데이터를 읽을 권한이 있어야 합니다. 자세한 내용은 역할 및 권한을 참고하세요.
승인 받기
파일에 대한 승인을 받으려면 fileId 및 approvalId 경로 매개변수와 함께 approvals 리소스에서 get 메서드를 사용합니다. 승인 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 토큰입니다.
승인 나열
파일의 승인을 나열하려면 approvals 리소스에서 list 메서드를 호출하고 fileId 경로 매개변수를 포함합니다.
응답 본문은 파일에 대한 승인 목록으로 구성됩니다. items 필드에는 approvals 리소스 형식의 각 승인에 관한 정보가 포함됩니다.
다음 쿼리 매개변수를 전달하여 승인 페이지를 맞춤설정하거나 필터링할 수도 있습니다.
pageSize: 페이지당 반환할 최대 승인 수입니다.pageSize를 설정하지 않으면 서버에서 최대 100개의 승인을 반환합니다.pageToken: 이전 목록 호출에서 수신된 페이지 토큰입니다. 이 토큰은 후속 페이지를 가져오는 데 사용됩니다. 이 값은 이전 응답의nextPageToken값으로 설정해야 합니다.
curl
curl -X GET 'https://www.googleapis.com/drive/v3/files/FILE_ID/approvals?pageSize=10' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
다음을 바꿉니다.
- FILE_ID: 승인이 적용되는 파일의 ID입니다.
- ACCESS_TOKEN: 앱의 OAuth 2.0 토큰입니다.