アクセス プロポーザルは、リクエスト元から承認者への提案で、受信者に Google ドライブのアイテムへのアクセス権を付与します。
承認者は、ドライブ ファイル全体で未解決のアクセス プロポーザルをすべて確認して対応できます。つまり、アクセス プロポーザルをプログラムでクエリして解決することで、承認プロセスを高速化できます。また、承認者が提案をまとめて表示することもできます。
Google Drive API には accessproposals
リソースが用意されているため、保留中のアクセス プロポーザルを表示して解決できます。accessproposals
リソースのメソッドは、ファイル、フォルダ、共有ドライブ内のファイルに対して機能しますが、共有ドライブに対しては機能しません。
以下の用語は、アクセス提案に固有のものです。
- リクエスト元: Google ドライブのアイテムへのアクセスを提案したユーザー。
- 受信者: アクセス プロポーザルが承認された場合に、ファイルに対する追加の権限を受け取るユーザー。多くの場合、受信者はリクエスト元と同じですが、必ずしもそうとは限りません。
- 承認者: アクセス プロポーザルの承認(または拒否)を担当するユーザー。これは通常、そのユーザーがドキュメントのオーナーであるか、ドキュメントを共有する権限を持っているためです。
保留中のアクセス プロポーザルを一覧表示する
ドライブ アイテムの保留中のアクセス提案をすべて一覧表示するには、accessproposals
リソースの list()
メソッドを呼び出し、fileId
パス パラメータを指定します。
ファイルの保留中のプロポーザルを一覧表示できるのは、そのファイルの承認者のみです。承認者は、ファイルに対する can_approve_access_proposals
権限を持つユーザーです。リクエスト元が承認者でない場合は、空のリストが返されます。capabilities
の詳細については、ファイル機能についてをご覧ください。
レスポンスの本文は、ファイルの未解決のアクセス プロポーザルのリストを表す AccessProposal
オブジェクトで構成されています。
AccessProposal
オブジェクトには、リクエスト元、受信者、リクエスト元が追加したメッセージなど、各提案に関する情報が含まれます。また、リクエスト元が提案した role
を view
とグループ化する AccessProposalRoleAndView
オブジェクトも含まれます。role
は繰り返しフィールドであるため、プロポーザルごとに複数存在する可能性があります。たとえば、提案には role=reader
と view=published
の AccessProposalRoleAndView
オブジェクトと、role=writer
値のみの追加の AccessProposalRoleAndView
オブジェクトが含まれている場合があります。詳細については、ビューをご覧ください。
次のクエリ パラメータを渡して、アクセス プロポーザルのページネーションのカスタマイズやフィルタリングを行います。
pageToken
: 前の list 呼び出しから受け取ったページトークン。後続のページを取得するには、このトークンを指定します。pageSize
: ページごとに返されるアクセス プロポーザルの最大数。
保留中のアクセス提案を解決する
ドライブ アイテムの保留中のアクセス提案をすべて解決するには、accessproposals
リソースの resolve()
メソッドを呼び出し、fileId
パス パラメータと proposalId
パス パラメータを含めます。
resolve()
メソッドには、提案に対して行うアクションを示す action
クエリ パラメータが含まれています。Action
オブジェクトは、プロポーザルの状態変化を追跡し、承認または拒否されたかどうかを把握します。
resolve()
メソッドには、role
と view
のオプションのクエリ パラメータも含まれています。サポートされているロールは writer
、commenter
、reader
のみです。ロールが指定されていない場合、デフォルトは reader
です。オプションのクエリ パラメータ send_notification
を使用すると、提案が承認または拒否されたときにリクエスト元にメール通知を送信できます。
list()
メソッドと同様に、提案を解決するユーザーには、ファイルに対する can_approve_access_proposals
権限が必要です。capabilities
の詳細については、ファイル機能についてをご覧ください。
提案は、ドライブ リソースを共有するシナリオに記載されているパターンを使用して解決されます。同じユーザーに対して複数の提案があり、ロールが異なる場合は、次のようになります。
- 1 つの提案が承認され、もう 1 つが拒否された場合、承認されたロールがドライブ アイテムに適用されます。
- 両方の提案が同時に承認された場合、より高い権限を持つ提案(
role=writer
とrole=reader
など)が適用されます。他のアクセス提案はアイテムから削除されます。
resolve()
メソッドにプロポーザルを送信すると、共有アクションが完了します。AccessProposal
は list()
メソッドを介して返されなくなりました。提案が承認されたら、ユーザーは permissions
コレクションを使用して、ファイルまたはフォルダの権限を更新する必要があります。詳細については、権限を更新するをご覧ください。