订阅 Google 云端硬盘事件

本页介绍了您的应用可以使用 Google Workspace Events API 订阅的 Google 云端硬盘事件。确定需要哪些类型的事件后,创建订阅即可开始接收来自云端硬盘的事件。

如需详细了解如何为云端硬盘开发应用,请参阅 Google Drive API 概览

支持的云端硬盘事件

Google Workspace 订阅可让您接收有关云端硬盘中以下类型更改的事件:

  • 文件为:
    • 已添加到文件夹或共享云端硬盘。
    • 已移至某个文件夹或共享云端硬盘。
    • 修改了版本或上传了新修订版本。
    • 已放入回收站或已从回收站中移除。
  • 针对文件创建或解决了访问提案

您可以监控哪些资源中的事件

如需接收事件,您需要指定要监控的云端硬盘资源,该资源称为订阅的目标资源

Google Workspace Events API 支持以下 Drive 目标资源:

目标资源 格式 限制(如适用)
文件 //googleapis.com/drive/v3/files/FILE

其中,FILE 是 Drive API files 资源的 资源名称中的 ID。您可以从文件的网址中获取该 ID,也可以使用 files.list 方法获取该 ID。

授权订阅的用户必须拥有订阅中相对于订阅事件的文件权限。
共享云端硬盘 //googleapis.com/drive/v3/drives/DRIVE

其中,DRIVE 是 Drive API drives 资源的 资源名称中的 ID。您可以从云端硬盘的网址中获取该 ID,也可以使用 drives.list 方法获取该 ID。

相应订阅仅接收用户通过其 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 事件的结构

下表显示了订阅 Drive 资源时支持的事件类型:

Event type 格式 资源数据
文件订阅  
文件已添加到文件夹或共享云端硬盘。

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 云端硬盘中的事件的事件数据和有效负载示例。

当您的 Google Workspace 订阅收到来自 Google 云端硬盘的事件时,data 字段会包含相应事件的载荷。此载荷包含有关发生更改的 Google Workspace 资源的信息。例如,如果您已订阅文件事件,则这些事件的载荷包含有关发生更改的 file 资源的信息。

事件载荷中的资源数据

创建订阅时,您可以指定希望载荷包含资源详细信息还是仅包含资源名称。例如,如果您想接收有关云端硬盘中文件的事件,可以指定要在事件载荷中接收 files 资源的哪些字段。

下表提供了订阅 Drive 资源的 JSON 载荷示例。文件 ID 包含字母、数字和一些特殊字符,结构为 files/^[01][0-9a-zA-Z_-]+$/。例如 files/1aaabbbAAABBB111222-_。对于订阅接收的每个事件,载荷都会显示在事件的 data 字段中:

示例 Event type 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"
      }
    ]
  }
}
      

限制

  • DriveOptions 中的 includeDescendants 布尔值字段为 true 时,即使触发事件的文件嵌套在用于云端硬盘订阅的文件夹下方很多层,共享云端硬盘和文件夹上的云端硬盘订阅也始终会调度事件。
  • 即使您已在某个文件夹中创建订阅,您也可能无法收到文件层次结构中的所有事件,因为用户或应用可能未被授予对这些事件的访问权限。在这种情况下,订阅仍处于有效状态,但您不会收到自己无权访问的资源的任何事件。
  • 订阅功能支持所有文件和文件夹的事件,但不支持共享云端硬盘的根文件夹。订阅功能仅适用于共享云端硬盘的文件和文件夹。直接对共享云端硬盘的根文件夹所做的更改不会触发事件。
  • 授权订阅的用户必须对相应文件拥有权限,才能订阅相应事件。
  • 订阅仅接收用户通过其 Google Workspace 账号或 Google 账号有权访问的资源的事件。