You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:40:20