管理评论和回复

评论是用户对文件提供的反馈,例如,文字处理文档的读者建议如何重述某个句子。注释分为两种:锚定注释非锚定注释。锚定注释与文档的特定版本中的特定位置(例如文字处理文档中的某个句子)相关联。反之,未锚定的评论只与文档相关联。

回复附加在评论中,表示用户对评论的回应。借助 Drive API,用户可以对您的应用创建的文档添加评论和回复。评论及其回复统称为讨论

在调用 comments 资源上列出的每个方法时,必须设置 fields 参数才能列出要在响应中返回的字段。如果您省略此参数,该方法会返回错误。如需返回您所需的确切字段,请参阅返回特定字段

添加未锚定的评论

如需向文档添加非锚定注释,请使用 fileId 参数和包含注释的 comments 资源调用 create() 方法。

评论会以纯文本形式插入,但响应正文会提供一个 htmlContent 字段,其中包含经过格式设置以供显示的内容。

添加对评论的回复

如需针对评论添加回复,请对 replies 资源使用 replies.create() 方法,并附带 fileIdcommentId 参数。请求正文使用 content 字段添加回复。

回复会以纯文本形式插入,但响应正文会提供一个 htmlContent 字段,其中包含采用适合显示的格式的内容。

该方法会返回 fields 字段中列出的字段。

显示示例

请求

在此示例中,我们提供了 fileIdcommentId 路径参数以及多个字段。

POST https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID/replies?fields=id,comment

请求正文

{
  "content": "This is a reply to a comment."
}

解决评论

您只能通过回复评论来解决评论问题。

如需解决评论,请对 replies 资源使用 replies.create() 方法,并使用 fileIdcommentId 参数。

请求正文使用 action 字段来解析评论。您还可以设置 content 字段,以添加用于关闭评论的回复。

评论解决后,云端硬盘会将评论资源标记为 resolved: true。与已删除的评论不同,已解决的评论可以包含 htmlContentcontent 字段。

当您的应用解决评论时,界面应指明该评论已得到处理。例如,您的应用可能会:

  • 禁止进一步回复,并使所有之前的回复以及原始评论变暗。
  • 隐藏已解决的评论。

显示示例

请求

在此示例中,我们提供了 fileIdcommentId 路径参数以及多个字段。

POST https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID/replies?fields=id,comment

请求正文

{
  "action": "resolve",
  "content": "This comment has been resolved."
}

向文档的最新修订版本添加锚定评论

添加评论时,您可能需要将其锚定到文件中的某个区域。锚点用于定义注释所引用的文件中的文件修订版和区域。comments 资源将 anchor 字段定义为 JSON 字符串。

如需添加锚定评论,请执行以下操作:

  1. (可选)调用 revisions.list() 方法可列出文档的每个 revisionID。仅当您想将评论锚定到最新修订版本以外的任何修订版本时,才需要执行此步骤。如果您想使用最新修订版,请为 revisionID 使用 head

  2. 使用 fileID 参数、包含注释的 comments 资源以及包含 revisionID (r) 和区域 (a) 的 JSON 锚点字符串调用 create() 方法。

如何定义地区取决于您所处理的文档内容类型。如需了解详情,请参阅定义地区

指定区域

如前所述,JSON 锚点字符串包含 revisionID (r) 和区域 (a)。区域 (a) 是一个 JSON 数组,其中包含区域分类器,用于指定注释的格式和锚定位置。分类器可以是图片的二维矩形、文档中的一行文本,或视频中的一段时长。如需定义区域,请选择与您尝试锚定的类型的内容相匹配的区域分类器。例如,如果您的内容是文本,您可能需要使用 txtline 区域分类器。

如需查看 Drive API 中的地区分类器列表,请参阅地区分类器

以下示例显示了一个 JSON 锚点字符串,用于将注释锚定到文档中两个单独区域中的行:

  • 第一个区域从第 12 行 ('n':12) 开始,延伸到第 15 行 ('l':3)。
  • 第二个区域仅涵盖第 18 行 ('n':18, 'l':1`)。
    {
      'r': 'REVISION_ID',
      'a': [
      {
        'line':
        {
          'n': 12,
          'l': 3,
        }
      },
      {
        'line':
        {
          'n': 18,
          'l': 1,
        }
      }]
    }

REVISION_ID 替换为 head 或特定修订版的 ID。

获取评论

如需获取文件的评论,请对 comments 资源使用 get() 方法,并使用 fileIdcommentId 参数。如果您不知道评论 ID,可以使用 list() 方法列出所有评论

该方法会返回 comments 资源的实例。

如需在结果中包含已删除的评论,请将 includedDeleted 查询参数设置为 true

显示示例

请求

在此示例中,我们提供了 fileIdcommentId 路径参数以及多个字段。

GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment,modifiedTime,resolved

列出评论

如需列出文件的评论,请对 comments 资源使用 list() 方法,并附带 fileId 参数。该方法会返回评论列表。

传递以下查询参数可自定义评论的分页或过滤条件:

  • includeDeleted:设置为 true 可包含已删除的评论。已删除的评论不包含 htmlContentcontent 字段。

  • pageSize:每页返回的评论数上限。

  • pageToken:从上一个列表调用收到的页面令牌。提供此令牌可检索后续页面。

  • startModifiedTime:结果注释的 modifiedTime 字段的最小值。

显示示例

请求

在此示例中,我们提供了 fileId 路径参数、includeDeleted 查询参数和多个字段。

GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments?includeDeleted=true&fields=(id,comment,kind,modifiedTime,resolved)

更新评论

如需更新文件的评论,请对 comments 资源使用 update() 方法,并使用 fileIdcommentId 参数。请求正文使用 content 字段更新评论。

该方法会返回 fields 查询参数中列出的字段。

显示示例

请求

在此示例中,我们提供了 fileIdcommentId 路径参数以及多个字段。

PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment

请求正文

{
  "content": "This comment is now updated."
}

删除评论

如需删除文件的评论,请对 comments 资源使用 delete() 方法,并使用 fileIdcommentId 参数。

删除评论后,云端硬盘会将评论资源标记为 deleted: true。已删除的评论不包含 htmlContentcontent 字段。

显示示例

请求

在此示例中,我们提供了 fileIdcommentId 路径参数。

DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID