如何通过Google Apps Script获取Google Docs审批流程信息?
解决方案
要获取Google Docs的审批流程信息,你需要使用高级Drive API(DriveApp基础服务没有提供审批相关的方法),以下是具体实现步骤和代码:
1. 启用高级Drive API
在Apps Script编辑器中:
- 点击左侧「服务」面板 → 「添加服务」
- 找到「Drive API」,点击「添加」启用它
注:如果遇到权限错误,需确保你的Google Cloud项目中已启用Drive API(通常编辑器内启用会自动同步,若未同步可手动前往Cloud Console搜索「Drive API」启用)
2. 核心代码实现
function getApprovalInfo(fileId) { try { // 1. 判断文档是否因审批被锁定 const file = Drive.Files.get(fileId, {supportsTeamDrives: true}); const isLockedForApproval = file.restrictions?.restricted === true && file.restrictions?.reason === 'approval'; // 2. 获取审批流程全量信息 const approvals = Drive.Approvals.list(fileId, {supportsTeamDrives: true}); let lastApprovalUser = null; let lastApprovalTime = null; let pendingApprovers = []; if (approvals.items && approvals.items.length > 0) { approvals.items.forEach(approval => { // 提取最后审批动作的用户和时间 if (approval.history && approval.history.length > 0) { const latestAction = approval.history.sort((a, b) => new Date(b.actionTime) - new Date(a.actionTime))[0]; if (['approve', 'reject'].includes(latestAction.action)) { lastApprovalUser = latestAction.user.displayName; lastApprovalTime = new Date(latestAction.actionTime); } } // 提取待审批用户列表 if (approval.pendingApprovers && approval.pendingApprovers.length > 0) { pendingApprovers = pendingApprovers.concat(approval.pendingApprovers.map(u => u.displayName)); } }); } // 3. 将信息打印到文档中 const doc = DocumentApp.openById(fileId); const body = doc.getBody(); body.appendParagraph('---'); body.appendParagraph('### 审批流程信息'); body.appendParagraph(`- 文档是否因审批锁定: ${isLockedForApproval ? '是' : '否'}`); body.appendParagraph(`- 最后审批用户: ${lastApprovalUser || '无'}`); body.appendParagraph(`- 最后审批时间: ${lastApprovalTime ? lastApprovalTime.toLocaleString() : '无'}`); body.appendParagraph(`- 待审批用户列表: ${pendingApprovers.length > 0 ? pendingApprovers.join(', ') : '无'}`); // 控制台输出调试信息 console.log('审批信息获取完成'); } catch (error) { console.error('获取审批信息失败:', error.message); } }
代码说明
- 判断审批锁定:通过文件的
restrictions属性判断,审批导致的锁定会标记reason: 'approval' - 最后审批记录:遍历审批流程的
history数组,按时间排序后取最新的「审批通过/拒绝」动作记录 - 待审批用户:直接从审批流程的
pendingApprovers字段提取用户名称 - 写入文档:使用
DocumentApp将信息追加到目标文档末尾
权限说明
执行脚本的用户需要拥有目标文档的编辑权限,并且能够查看文档的审批流程信息。
内容的提问来源于stack exchange,提问作者Giovanni Cresti
相关产品推荐
相关产品推荐

