Google ドライブのイベントに登録する

このページでは、Google Workspace Events API を使用してアプリが登録できる Google ドライブのイベントについて説明します。必要なイベントの種類を決定したら、サブスクリプションを作成して、ドライブからイベントの受信を開始します。

ドライブ用のアプリの開発について詳しくは、 Google Drive API の概要をご覧ください。

サポートされているドライブ イベント

Google Workspace サブスクリプションでは、ドライブで行われた次の種類の変更に関するイベントを受信できます。

  • ファイルは次のとおりです。
    • フォルダまたは共有ドライブに追加された。
    • フォルダまたは共有ドライブに移動された。
    • 編集済みまたは新しいリビジョンがアップロードされた。
    • ゴミ箱に移動されたか、ゴミ箱から削除された。
  • ファイルでアクセス提案が作成または解決された。

イベントをモニタリングできるリソース

イベントを受信するには、監視するドライブ リソースを指定します。これは、サブスクリプションのターゲット リソースと呼ばれます。

Google Workspace Events API は、ドライブの次のターゲット リソースをサポートしています。

ターゲット リソース 形式 制限事項(該当する場合)
ファイル //googleapis.com/drive/v3/files/FILE

ここで、FILE は Drive API files リソースの リソース名の ID です。ID は、ファイルの URL から取得するか、files.list メソッドを使用して取得できます。

サブスクリプションを承認するユーザーは、サブスクライブするイベントに関連するサブスクリプション内のファイルに対する権限を持っている必要があります。
共有ドライブ //googleapis.com/drive/v3/drives/DRIVE

ここで、DRIVE は Drive API drives リソースの リソース名の ID です。ID は、ドライブの URL から取得するか、drives.list メソッドを使用して取得できます。

サブスクリプションは、ユーザーが 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.drive.file.v3.created

file

ファイルがフォルダまたは共有ドライブに移動された。

google.workspace.drive.file.v3.moved

file

ファイルが編集されたか、新しい版がアップロードされた。

google.workspace.drive.file.v3.contentChanged

file

ファイルが削除されます。

google.workspace.drive.file.v3.deleted

file

ファイルがゴミ箱に移動された。

google.workspace.drive.file.v3.trashed

file

ファイルがゴミ箱から削除された。

google.workspace.drive.file.v3.untrashed

file

ファイルにアクセス提案が作成されます。

google.workspace.drive.accessproposal.v3.created

accessproposal

ファイルでアクセス提案が解決されます。

google.workspace.drive.accessproposal.v3.resolved

accessproposal

共有ドライブのサブスクリプション  
ファイルがフォルダまたは共有ドライブに追加された。

google.workspace.drive.file.v3.created

file

ファイルがフォルダまたは共有ドライブに移動された。

google.workspace.drive.file.v3.moved

file

ファイルが編集されたか、新しい版がアップロードされた。

google.workspace.drive.file.v3.contentChanged

file

ファイルが削除されます。

google.workspace.drive.file.v3.deleted

file

ファイルがゴミ箱に移動された。

google.workspace.drive.file.v3.trashed

file

ファイルがゴミ箱から削除された。

google.workspace.drive.file.v3.untrashed

file

ファイルにアクセス提案が作成されます。

google.workspace.drive.accessproposal.v3.created

accessproposal

ファイルでアクセス提案が解決されます。

google.workspace.drive.accessproposal.v3.resolved

accessproposal

イベントデータ

このセクションでは、ドライブのイベントのイベントデータとペイロードの例について説明します。

Google Workspace サブスクリプションがドライブからイベントを受信すると、data フィールドにイベントのペイロードが含まれます。このペイロードには、変更された Google Workspace リソースに関する情報が含まれています。たとえば、ファイル イベントをサブスクライブしている場合、これらのイベントのペイロードには、変更された file リソースに関する情報が含まれます。

イベント ペイロードのリソースデータ

サブスクリプションを作成するときに、ペイロードにリソースの詳細を含めるか、リソースの名前のみを含めるかを指定できます。たとえば、ドライブ内のファイルに関するイベントを受信する場合は、イベント ペイロードで受信する files リソースのフィールドを指定できます。

次の表に、Drive リソースのサブスクリプションの JSON ペイロードの例を示します。ファイル ID には、files/^[01][0-9a-zA-Z_-]+$/ の形式で英数字と一部の特殊文字が含まれます。例: files/1aaabbbAAABBB111222-_サブスクリプションが受信する各イベントのペイロードは、イベントの data フィールドに表示されます。

イベント タイプ JSON ペイロード

ユーザーがフォルダまたは共有ドライブにファイルを追加します。

google.workspace.drive.file.v3.created

リソース データを含む
{
  "fileCreatedEvent": {
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
  }
}
      
リソースデータを除外する
{
  "fileCreatedEvent": {
    "file": {
      "id": "FILE_ID"
    }
  }
}
      

ユーザーがファイルをフォルダまたは共有ドライブに移動します。

google.workspace.drive.file.v3.moved

リソース データを含む
{
  "fileMovedEvent": {
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
  }
}
      
リソースデータを除外する
{
  "fileMovedEvent": {
    "file": {
      "id": "FILE_ID"
    }
  }
}
      

ユーザーがファイルを編集するか、新しいリビジョンがアップロードされた場合。

google.workspace.drive.file.v3.contentChanged

リソース データを含む
{
  "fileContentChangedEvent": {
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
  }
}
      
リソースデータを除外する
{
  "fileContentChangedEvent": {
    "file": {
      "id": "FILE_ID"
    }
  }
}
      

ユーザーがファイルを削除します。

google.workspace.drive.file.v3.deleted

リソース データを含む
{
  "fileDeletedEvent": {
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
  }
}
      
リソースデータを除外する
{
  "fileDeletedEvent": {
    "file": {
      "id": "FILE_ID"
    }
  }
}
      

ユーザーがファイルをゴミ箱に移動します。

google.workspace.drive.file.v3.trashed

リソース データを含む
{
  "fileTrashedEvent": {
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
  }
}
      
リソースデータを除外する
{
  "fileTrashedEvent": {
    "file": {
      "id": "FILE_ID"
    }
  }
}
      

ユーザーがゴミ箱からファイルを復元します。

google.workspace.drive.file.v3.untrashed

リソース データを含む
{
  "fileUntrashedEvent": {
    "file": {
      "id": "FILE_ID",
      "parent": "PARENT_ID",
      "version": "63",
      "mimeType": "application/vnd.google-apps.document"
    }
  }
}
      
リソースデータを除外する
{
  "fileUntrashedEvent": {
    "file": {
      "id": "FILE_ID"
    }
  }
}
      

ユーザーがファイルに対するアクセス提案を作成します。

google.workspace.drive.accessproposal.v3.created

リソース データを含む
{
  "accessProposalCreatedEvent": {
    "accessProposal": [
      {
        "file_id": "FILE_ID",
        "proposalId": "PROPOSAL_ID",
        "recipientEmailAddress": "63",
        "requesterEmailAddress": "application/vnd.google-apps.document",
        "requestMessage": "grant me access to this file",
        "rolesAndViews": [
          {
            "role": "writer",
            "view": "published"
          }
        ]
      }
    ]
  }
}
      
リソースデータを除外する
{
  "accessProposalCreatedEvent": {
    "accessProposal": [
      {
        "proposalId": "PROPOSAL_ID"
      }
    ]
  }
}
      

ユーザーがファイルに対するアクセス提案を解決します。

google.workspace.drive.accessProposal.v3.resolved

リソース データを含む
{
  "accessProposalResolvedEvent": {
    "accessProposal": [
      {
        "file_id": "FILE_ID",
        "proposalId": "PROPOSAL_ID",
        "recipientEmailAddress": "63",
        "requesterEmailAddress": "application/vnd.google-apps.document",
        "requestMessage": "resolve access to this file",
        "rolesAndViews": [
          {
            "role": "writer",
            "view": "published"
          }
        ]
      }
    ]
  }
}
      
リソースデータを除外する
{
  "accessProposalResolvedEvent": {
    "accessProposal": [
      {
        "proposalId": "PROPOSAL_ID"
      }
    ]
  }
}
      

制限事項

  • DriveOptionsincludeDescendants ブール値フィールドが true の場合、イベントをトリガーしたファイルが Drive サブスクリプションに使用されるフォルダの何層も下にネストされている場合でも、共有ドライブとフォルダの Drive サブスクリプションは常にイベントをディスパッチします。
  • フォルダでサブスクリプションを作成しても、ユーザーまたはアプリケーションにアクセス権が付与されていない場合、ファイル階層内のすべてのイベントを受信できないことがあります。この場合、サブスクリプションは有効なままですが、アクセスできないリソースのイベントは受信されません。
  • サブスクリプションは、すべてのファイルとフォルダのイベントでサポートされていますが、共有ドライブのルートフォルダではサポートされていません。サブスクリプションは、共有ドライブ内のファイルとフォルダでのみサポートされます。共有ドライブのルートフォルダに直接変更を加えても、イベントはトリガーされません。
  • サブスクリプションを承認するユーザーには、サブスクライブするイベントに対応するファイルに対する権限が必要です。
  • サブスクリプションは、ユーザーが Google Workspace アカウントまたは Google アカウントでアクセスできるリソースのイベントのみを受信します。