このドキュメントでは、Google Drive API で承認を管理する方法について説明します。
ユーザーは Google ドライブのドキュメントを正式な承認プロセスに通すことができます。 このプロセスを使用して、公開前に契約書のレビューや公式文書の承認を得ることができます。承認では、レビューのステータス(進行中、承認済み、却下など)と、関与するレビュー担当者の両方が追跡されます。 承認は、コンテンツを検証し、レビュー担当者の記録を保持するのに最適な方法です。
ドライブでコンテンツの承認を作成、管理できます。Google Drive API には、ファイルの承認を処理するための approvals リソースが用意されています。approvals リソースのメソッドは、ドライブ、Google ドキュメント、その他の Google
Workspace エディタ内のアイテムに対して機能します。レビュー担当者はドキュメントに対して、承認または却下したり、フィードバックしたりできます。
始める前に
ファイルには
canStartApproval機能が含まれている必要があります。ファイルの機能を確認するには、getメソッドをfilesリソースで呼び出し、fileIdパスパラメータを指定し、fieldsパラメータのcanStartApproval機能フィールドを使用します。詳細については、ファイルの 機能についてをご覧ください。ブール値の
canStartApproval機能は、次の場合にfalseになります。- 管理者の設定により、この機能へのアクセスが制限されている。
- Google Workspace のエディションが対象外である。
- ファイルがドメイン外のユーザーによって所有されている。
- ユーザーにファイルに対する
role=writer権限がない。
ターゲット ファイルをレビュー担当者と手動で共有してください。 ドライブでは自動的に行われません。レビュー担当者がファイルにアクセスできない場合、承認リクエストは成功しますが、通知を受け取ったり、ファイルを表示したりすることはできません。
コンセプト
次の主要なコンセプトが承認の基盤となります。
承認状況
ドキュメントの承認をリクエストすると、承認プロセスにより、すべてのレビュー担当者がドキュメントに意見を提供できるようになります。
approvals リソースには、リソースがリクエストされたときの承認のステータスを詳しく示す
Status オブジェクトが含まれています。また、特定のレビュー担当者による承認に対するレスポンスを詳しく示す
ReviewerResponseオブジェクトも含まれています。各レビュー担当者の
レスポンスは
Response オブジェクトで表されます。
承認の
Status が IN_PROGRESS のときにファイルの内容が変更された場合の承認の動作は、fileContentChangeBehavior フィールドの
approvals リソースによって決まります。次の動作を適用できます。
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に設定されている場合)、開始者とレビュー担当者の両方が操作できます。They はcommentを追加したり、開始者 はレビュー担当者をreassignしたり、1 人 以上のレビュー担当者がリクエストをapproveしたりできます。承認が完了ステータス 。すべての レビュー担当者がリクエストを承認した場合、開始者がリクエストを
cancelした場合、またはレビュー担当者がリクエストをdeclineした場合、承認は完了 ステータス(statusがAPPROVED、CANCELLED、DECLINEDに設定されている)になります。
fields パラメータを使用する
レスポンスで返すフィールドを指定する場合は、
fields system
parameter
を 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 に設定されます。
Status が IN_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 メソッドを使用し、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 トークン。
承認のレビュー担当者を再割り当てする
承認のレビュー担当者を再割り当てするには、
reassign メソッドを approvals リソースで使用し、fileId と approvalId
パスパラメータを含めます。
reassign メソッドを使用すると、承認の開始者(または
role=writer 権限を持つユーザー)は、
ReviewerResponse オブジェクトで
approvals リソースのレビュー担当者を追加または置換できます。role=reader
権限を持つユーザーは、自分に割り当てられた承認のみを再割り当てできます。これにより、ユーザーはリクエストをより有能なレビュー担当者に再割り当てできます。
レビュー担当者を再割り当てできるのは、
Status が IN_PROGRESS で、再割り当てされるレビュー担当者の
response
フィールドが NO_RESPONSE に設定されている場合のみです。
承認のレビュー担当者を削除することはできません。レビュー担当者を削除する必要がある場合は、承認をキャンセルして新しい承認を開始する必要があります。
リクエストの本文は、省略可能な addReviewers および replaceReviewers フィールドで構成されます。各フィールドには、追加するレビュー担当者 1 人、または置換するレビュー担当者 2 人のペアを含む、
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 トークン。
承認を取り消す
承認を取り消すには、cancel
リソースの approvals メソッドを使用し、
fileId パスパラメータと approvalId パスパラメータを含めます。
cancel メソッドを呼び出すことができるのは、承認の開始者(または
role=writer 権限を持つユーザー)のみで、承認の
Status が IN_PROGRESS の間です。
リクエストの本文は、承認の取り消しに伴うメッセージを含む文字列である省略可能な 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 トークン。
承認を却下する
承認を却下するには、
decline メソッドを approvals リソースで使用し、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 トークン。
承認を承認する
承認を承認するには、
approve メソッドを approvals リソースで使用し、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 を使用して承認のステータスを取得
して一覧表示することもできます。
ファイルの承認を表示するには、ファイルのメタデータを読み取る権限が必要です。詳細については、ロールと 権限をご覧ください。
承認を受ける
ファイルの承認を取得するには、get
メソッドを approvals リソースで fileId および approvalId パス
パラメータとともに使用します。承認 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' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
次のように置き換えます。
- FILE_ID: 承認対象のファイルの ID。
- ACCESS_TOKEN:アプリの OAuth 2.0 トークン。