如何获取Google Docs中评论的被分配人信息?
获取Google Docs评论被分配人的可行方案
目前Google官方Docs API确实未直接提供获取或设置评论被分配人的接口,但可以通过以下几种变通方式获取或推断相关信息:
1. 结合Drive API与People API获取精准信息
Drive API的comments资源包含assignedTo字段,该字段返回被分配人的用户ID,再通过People API即可解析出姓名和邮箱:
- 调用Drive API的
files.comments.list接口,获取目标文档的评论列表,提取每条评论的assignedTo(用户ID) - 将用户ID传入People API的
people.get接口,指定personFields=names,emailAddresses参数,即可获取对应账号的姓名和邮箱
注意:此方法需同时授权Drive API和People API,且目标用户需在你的授权访问范围内(如同域企业账号)。
2. 解析网页端DOM元素(非生产环境适用)
在Docs网页端,被分配人信息会渲染在页面HTML中:
- 打开目标文档网页,查看页面源代码,定位包含
assigned-to类名的DOM节点 - 从节点内容或关联的
mailto:链接中提取姓名和邮箱
此方法属于网页抓取,Google服务条款可能限制此类操作,且页面结构易变,仅适合临时需求。
3. Google Apps Script脚本实现
通过Apps Script启用高级服务,结合Drive和People API批量获取:
function fetchCommentAssignees() { const doc = DocumentApp.getActiveDocument(); const docId = doc.getId(); // 获取文档评论列表(需启用Drive高级服务) const comments = Drive.Comments.list(docId); if (comments.items) { comments.items.forEach(comment => { if (comment.assignedTo) { // 调用People API获取用户信息(需启用People高级服务) const userInfo = People.People.get(`people/${comment.assignedTo}`, {personFields: 'names,emailAddresses'}); const userName = userInfo.names[0].displayName; const userEmail = userInfo.emailAddresses[0].value; console.log(`评论ID: ${comment.id}, 被分配人: ${userName} <${userEmail}>`); } }); } }
需在Apps Script编辑器中启用Drive API和People API的高级服务,完成授权后即可运行。
4. 间接推断方法
若上述方法无法使用,可通过评论上下文推断:
- 查看Drive API返回的评论
updatedBy字段,若评论被分配后仅被特定用户更新,该用户大概率为被分配人 - 结合评论回复内容,从回复者的签名或表述中提取姓名(无法直接获取邮箱)
内容的提问来源于stack exchange,提问作者GJ.
相关产品推荐
相关产品推荐

