このページでは、Google Workspace Events API を使用してアプリが登録できる Google ドライブのイベントについて説明します。必要なイベントの種類を決定したら、サブスクリプションを作成して、ドライブからイベントの受信を開始します。
ドライブ用のアプリの開発について詳しくは、 Google Drive API の概要をご覧ください。
サポートされているドライブ イベント
Google Workspace サブスクリプションでは、ドライブで行われた次の種類の変更に関するイベントを受信できます。
ファイルに対するアクセス提案が作成または解決された。
ファイルに対する承認が作成、キャンセル、リセット、完了された。ファイルの承認審査担当者が変更されました。承認の審査担当者がファイルに対する承認に応答しました。
ファイルまたは共有ドライブ内のファイルでコメントが作成、編集、解決、再開、削除された。
ファイルは次のとおりです。
- フォルダまたは共有ドライブに追加された。
- フォルダまたは共有ドライブに移動された。
- 編集済みまたは新しいリビジョンがアップロードされた。
- ゴミ箱に移動された、またはゴミ箱から削除された。
- 名前が変更されました(ファイルまたはフォルダのタイトルが変更されました)。
ファイルまたは共有ドライブ内のファイルにあるコメント スレッドで返信が作成、編集、削除された。
イベントをモニタリングできるリソース
イベントを受信するには、モニタリングするドライブ リソースを指定します。これは、サブスクリプションのターゲット リソースと呼ばれます。
Google Workspace Events API は、ドライブの次のターゲット リソースをサポートしています。
| ターゲット リソース | 形式 | 制限事項(該当する場合) |
|---|---|---|
| ファイル |
//drive.googleapis.com/files/FILE
ここで、FILE は Drive API の |
サブスクリプションを承認するユーザーは、サブスクライブするイベントに関連するサブスクリプション内のファイルに対する権限を持っている必要があります。 |
| 共有ドライブ |
//drive.googleapis.com/drives/DRIVE
ここで、DRIVE は Drive API の |
サブスクリプションは、ユーザーが 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 イベントの構造をご覧ください。
次の表に、ドライブ リソースのサブスクリプションでサポートされているイベントタイプを示します。
| イベント タイプ | 形式 | リソースデータ | ||
|---|---|---|---|---|
| ファイルと共有ドライブの定期購入 | ||||
| ファイルに対するアクセス提案が作成された。 |
|
|
||
| ファイルに対するアクセス提案が解決された。 |
|
|
||
| ファイルで承認が作成されます。 |
|
|
||
| ファイルの承認がキャンセルされた。 |
|
|
||
| ファイルの承認がリセットされます。 |
|
|
||
| ファイルの承認が完了しました。 |
|
|
||
| ファイルの承認審査担当者が変更されました。 |
|
|
||
| 承認の審査担当者がファイルに対する承認に応答しました。 |
|
|
||
| ファイルまたは共有ドライブ内のファイルにコメントが作成された。 |
|
|
||
| ファイルまたは共有ドライブ内のファイルに対するコメントが編集された。 |
|
|
||
| ファイルまたは共有ドライブ内のファイルでコメントが解決された。 |
|
|
||
| ファイルまたは共有ドライブ内のファイルでコメントが再度開かれた。 |
|
|
||
| ファイルまたは共有ドライブ内のファイルに対するコメントが削除された。 |
|
|
||
| ファイルがフォルダまたは共有ドライブに追加された。 |
|
|
||
| ファイルがフォルダまたは共有ドライブに移動された。 |
|
|
||
| ファイルが編集されたか、新しいリビジョンがアップロードされた。 |
|
|
||
| ファイルが削除されます。 |
|
|
||
| ファイルがゴミ箱に移動された。 |
|
|
||
| ファイルがゴミ箱から削除された。 |
|
|
||
| ファイルの名前が変更された。 |
|
|
||
| ファイルまたは共有ドライブ内のファイルにあるコメント スレッドに返信が作成されます。 |
|
|
||
| ファイルまたは共有ドライブ内のファイルにあるコメント スレッドで返信が編集された。 |
|
|
||
| ファイルまたは共有ドライブ内のファイルにあるコメント スレッドの返信が削除された。 |
|
|
||
イベントデータ
このセクションでは、ドライブのイベントのイベントデータとペイロードの例について説明します。
Google Workspace サブスクリプションがドライブからイベントを受信すると、data フィールドにイベントのペイロードが含まれます。このペイロードには、変更された Google Workspace リソースに関する情報が含まれています。たとえば、ファイル イベントをサブスクライブしている場合、これらのイベントのペイロードには、変更された files リソースに関する情報が含まれます。
イベント ペイロードのリソースデータ
サブスクリプションを作成するときに、ペイロードにリソースの詳細を含めるか、リソースの名前のみを含めるかを指定できます。たとえば、ドライブ内のファイルに関するイベントを受信する場合は、イベント ペイロードで受信する files リソースのフィールドを指定できます。
次の表に、Drive リソースのサブスクリプションの JSON ペイロードの例を示します。ファイル ID には、files/^[01][0-9a-zA-Z_-]+$/ の形式で英数字と一部の特殊文字が含まれます。例: files/1aaabbbAAABBB111222-_サブスクリプションが受信する各イベントのペイロードは、イベントの data フィールドに表示されます。
| 例 | イベント タイプ | JSON ペイロード |
|---|---|---|
ユーザーがファイルに対するアクセス提案を作成します。 |
|
リソースデータを含む
{
"accessProposal": [
{
"file_id": "FILE_ID",
"proposalId": "PROPOSAL_ID",
"recipientEmailAddress": "alex@altostrat.com",
"requesterEmailAddress": "kai@cymbalgroup.com",
"requestMessage": "grant me access to this file",
"rolesAndViews": [
{
"role": "writer",
"view": "published"
}
]
}
]
}
リソースデータを除外する
{
"accessProposal": [
{
"proposalId": "PROPOSAL_ID"
}
]
}
|
ユーザーがファイルに対するアクセス提案を解決します。 |
|
リソースデータを含む
{
"accessProposal": [
{
"file_id": "FILE_ID",
"proposalId": "PROPOSAL_ID",
"recipientEmailAddress": "alex@altostrat.com",
"requesterEmailAddress": "kai@cymbalgroup.com",
"requestMessage": "resolve access to this file",
"rolesAndViews": [
{
"role": "writer",
"view": "published"
}
]
}
]
}
リソースデータを除外する
{
"accessProposal": [
{
"proposalId": "PROPOSAL_ID"
}
]
}
|
ユーザーがファイルで承認を作成します。 |
|
リソースデータを含む
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID",
"dueDate": "1970-01-01T20:42:44.565Z",
"status": "IN_PROGRESS",
"reviewerEmailAddresses": ["reviewer1@cymbalgroup.com", "reviewer2@cymbalgroup.com"],
"initiatorEmailAddress": ["initiator@cymbalgroup.com"]
}
}
リソースデータを除外する
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID"
}
}
|
ユーザーがファイルの承認をキャンセルします。 |
|
リソースデータを含む
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID",
"dueDate": "1970-01-01T20:42:44.565Z",
"status": "CANCELLED",
"reviewerEmailAddresses": ["reviewer1@cymbalgroup.com", "reviewer2@cymbalgroup.com"],
"initiatorEmailAddress": ["initiator@cymbalgroup.com"]
}
}
リソースデータを除外する
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID"
}
}
|
ユーザーがファイルの承認をリセットします。 |
|
リソースデータを含む
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID",
"dueDate": "1970-01-01T20:42:44.565Z",
"status": "IN_PROGRESS",
"reviewerEmailAddresses": ["reviewer1@cymbalgroup.com", "reviewer2@cymbalgroup.com"],
"initiatorEmailAddress": ["initiator@cymbalgroup.com"]
}
}
リソースデータを除外する
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID"
}
}
|
ユーザーがファイルの承認を完了した。 |
|
リソースデータを含む
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID",
"dueDate": "1970-01-01T20:42:44.565Z",
"status": "APPROVED",
"reviewerEmailAddresses": ["reviewer1@cymbalgroup.com", "reviewer2@cymbalgroup.com"],
"initiatorEmailAddress": ["initiator@cymbalgroup.com"]
}
}
リソースデータを除外する
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID"
}
}
|
ファイルの承認審査担当者が変更されました。 |
|
リソースデータを含む
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID",
"dueDate": "1970-01-01T20:42:44.565Z",
"status": "APPROVED",
"reviewerEmailAddresses": ["reviewer1@cymbalgroup.com", "reviewer2@cymbalgroup.com"],
"initiatorEmailAddress": ["initiator@cymbalgroup.com"]
}
}
リソースデータを除外する
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID"
}
}
|
承認の審査担当者がファイルに対する承認に応答しました。 |
|
リソースデータを含む
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID",
"dueDate": "1970-01-01T20:42:44.565Z",
"status": "APPROVED",
"reviewerEmailAddresses": ["reviewer1@cymbalgroup.com", "reviewer2@cymbalgroup.com"],
"initiatorEmailAddress": ["initiator@cymbalgroup.com"]
},
"response": {
"reviewerEmailAddress": "reviewer1@cymbalgroup.com",
"response": "DECLINED"
}
}
リソースデータを除外する
{
"approval": {
"approvalId": "APPROVAL_ID",
"targetFileId": "FILE_ID"
}
}
|
ユーザーがファイルにコメントを作成します。 |
|
リソースデータを含む
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID",
"mentioned_email_addresses": ["alex@altostrat.com", "kai@cymbalgroup.com"],
"assignee_email_address": "yuri@altostrat.com"
}
}
リソースデータを除外する
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID"
}
}
|
ユーザーがファイルに対するコメントを編集します。 |
|
リソースデータを含む
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID",
"mentioned_email_addresses": ["alex@altostrat.com", "kai@cymbalgroup.com"],
"assignee_email_address": "yuri@altostrat.com"
}
}
リソースデータを除外する
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID"
}
}
|
ユーザーがファイルに対するコメントを解決した。 |
|
リソースデータを含む
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID",
"mentioned_email_addresses": ["alex@altostrat.com", "kai@cymbalgroup.com"],
"assignee_email_address": "yuri@altostrat.com"
}
}
リソースデータを除外する
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID"
}
}
|
ユーザーがファイルに対するコメントを再度開いた場合。 |
|
リソースデータを含む
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID",
"mentioned_email_addresses": ["alex@altostrat.com", "kai@cymbalgroup.com"],
"assignee_email_address": "yuri@altostrat.com"
}
}
リソースデータを除外する
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID"
}
}
|
ユーザーがファイル上のコメントを削除した場合。 |
|
リソースデータを含む
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID",
"mentioned_email_addresses": ["alex@altostrat.com", "kai@cymbalgroup.com"],
"assignee_email_address": "yuri@altostrat.com"
}
}
リソースデータを除外する
{
"comment": {
"id": "COMMENT_ID",
"file_id": "FILE_ID"
}
}
|
ユーザーがフォルダまたは共有ドライブにファイルを追加する。 |
|
リソースデータを含む
{
"file": {
"id": "FILE_ID",
"parent": "PARENT_ID",
"version": "63",
"mimeType": "application/vnd.google-apps.document"
}
}
リソースデータを除外する
{
"file": {
"id": "FILE_ID"
}
}
|
ユーザーがファイルをフォルダまたは共有ドライブに移動します。 |
|
リソースデータを含む
{
"file": {
"id": "FILE_ID",
"parent": "PARENT_ID",
"version": "63",
"mimeType": "application/vnd.google-apps.document"
}
}
リソースデータを除外する
{
"file": {
"id": "FILE_ID"
}
}
|
ユーザーがファイルを編集したか、新しいリビジョンがアップロードされた。 |
|
リソースデータを含む
{
"file": {
"id": "FILE_ID",
"parent": "PARENT_ID",
"version": "63",
"mimeType": "application/vnd.google-apps.document"
}
}
リソースデータを除外する
{
"file": {
"id": "FILE_ID"
}
}
|
ユーザーがファイルを削除します。 |
|
リソースデータを含む
{
"file": {
"id": "FILE_ID",
"parent": "PARENT_ID",
"version": "63",
"mimeType": "application/vnd.google-apps.document"
}
}
リソースデータを除外する
{
"file": {
"id": "FILE_ID"
}
}
|
ユーザーがファイルをゴミ箱に移動します。 |
|
リソースデータを含む
{
"file": {
"id": "FILE_ID",
"parent": "PARENT_ID",
"version": "63",
"mimeType": "application/vnd.google-apps.document"
}
}
リソースデータを除外する
{
"file": {
"id": "FILE_ID"
}
}
|
ユーザーがゴミ箱からファイルを復元します。 |
|
リソースデータを含む
{
"file": {
"id": "FILE_ID",
"parent": "PARENT_ID",
"version": "63",
"mimeType": "application/vnd.google-apps.document"
}
}
リソースデータを除外する
{
"file": {
"id": "FILE_ID"
}
}
|
ユーザーがファイルまたはフォルダの名前を変更します。 |
|
リソースデータを含む
{
"file": {
"id": "FILE_ID",
"parent": "PARENT_ID",
"version": "63",
"mimeType": "application/vnd.google-apps.document"
}
}
リソースデータを除外する
{
"file": {
"id": "FILE_ID"
}
}
|
ユーザーがコメント スレッドにコメントの返信を作成します。 |
|
リソースデータを含む
{
"reply": {
"id": "REPLY_ID",
"comment_id": "COMMENT_ID",
"file_id": "FILE_ID",
"mentioned_email_addresses": ["alex@altostrat.com", "kai@cymbalgroup.com"],
"assignee_email_address": "yuri@altostrat.com"
}
}
リソースデータを除外する
{
"reply": {
"id": "REPLY_ID",
"comment_id": "COMMENT_ID",
"file_id": "FILE_ID"
}
}
|
ユーザーがコメント スレッドのコメントへの返信を編集します。 |
|
リソースデータを含む
{
"reply": {
"id": "REPLY_ID",
"comment_id": "COMMENT_ID",
"file_id": "FILE_ID",
"mentioned_email_addresses": ["alex@altostrat.com", "kai@cymbalgroup.com"],
"assignee_email_address": "yuri@altostrat.com"
}
}
リソースデータを除外する
{
"reply": {
"id": "REPLY_ID",
"comment_id": "COMMENT_ID",
"file_id": "FILE_ID"
}
}
|
ユーザーがコメント スレッドのコメントへの返信を削除します。 |
|
リソースデータを含む
{
"reply": {
"id": "REPLY_ID",
"comment_id": "COMMENT_ID",
"file_id": "FILE_ID",
"mentioned_email_addresses": ["alex@altostrat.com", "kai@cymbalgroup.com"],
"assignee_email_address": "yuri@altostrat.com"
}
}
リソースデータを除外する
{
"reply": {
"id": "REPLY_ID",
"comment_id": "COMMENT_ID",
"file_id": "FILE_ID"
}
}
|
制限事項
DriveOptionsのincludeDescendantsブール値フィールドがtrueの場合、共有ドライブとフォルダのドライブ サブスクリプションは、イベントをトリガーしたファイルがドライブ サブスクリプションに使用されたフォルダの何層も下にある場合でも、常にイベントをディスパッチします。- フォルダでサブスクリプションを作成しても、ユーザーまたはアプリケーションにアクセス権が付与されていない場合、ファイル階層内のすべてのイベントを受信できないことがあります。この場合、サブスクリプションは有効なままですが、アクセス権のないリソースのイベントは受信されません。
- サブスクリプションは、すべてのファイルとフォルダのイベントでサポートされていますが、共有ドライブのルートフォルダではサポートされていません。サブスクリプションは、共有ドライブ内のファイルとフォルダでのみサポートされています。共有ドライブのルートフォルダに直接変更を加えても、イベントはトリガーされません。
- サブスクリプションを承認するユーザーには、登録するイベントに対応するファイルに対する権限が必要です。
- サブスクリプションは、ユーザーが Google Workspace アカウントまたは Google アカウントでアクセスできるリソースのイベントのみを受信します。