如何通过Google Apps Script实现审批后自动生成PDF并移动至指定文件夹
Google Drive审批触发PDF转换并归档实现方案
可行性确认
完全可以实现你的需求,核心是通过Google Apps Script的可安装变更触发器捕捉文档审批状态的变更,结合Drive服务完成PDF生成与归档操作。
核心知识点
1. 检查审批状态的方法
直接使用DriveApp.getFileById(fileId).getApprovalStatus()即可获取文档的审批状态,返回的枚举值包括:
DriveApp.ApprovalStatus.APPROVED(已批准)DriveApp.ApprovalStatus.REJECTED(已拒绝)DriveApp.ApprovalStatus.PENDING(待审批)
2. 触发方式
推荐使用可安装的Drive onChange触发器,当文档的审批状态发生变化时,自动触发脚本执行。这种方式无需依赖额外API,适合新手快速上手。
示例脚本
function handleApprovalTrigger(e) { // 过滤非文件变更的触发事件 if (!e || e.changeType !== 'change') return; const targetFile = DriveApp.getFileById(e.source.getId()); const currentStatus = targetFile.getApprovalStatus(); // 仅处理已批准的文档 if (currentStatus !== DriveApp.ApprovalStatus.APPROVED) return; // 生成PDF副本 const pdfBlob = targetFile.getAs('application/pdf'); const pdfFile = DriveApp.createFile(pdfBlob) .setName(`${targetFile.getName()}_已批准.pdf`); // 替换为你的目标只读文件夹ID const archiveFolderId = '替换为实际的文件夹ID'; const archiveFolder = DriveApp.getFolderById(archiveFolderId); // 将PDF移动到归档文件夹 archiveFolder.addFile(pdfFile); DriveApp.getRootFolder().removeFile(pdfFile); // 可选:给原文档添加操作记录 targetFile.setDescription(`${targetFile.getDescription() || ''}\n[系统自动操作] 已生成批准PDF并归档`); }
触发器设置步骤
- 打开Google Apps Script编辑器(可创建独立项目,或绑定到任意Drive文档)
- 左侧菜单点击「触发器」图标,选择「添加触发器」
- 配置参数:
- 选择函数:
handleApprovalTrigger - 部署类型:
Head - 事件源:
从驱动器 - 事件类型:
更改
- 选择函数:
- 保存并完成权限授权(需授予脚本Drive文件的读写权限)
注意事项
- 确保运行脚本的账号拥有目标归档文件夹的编辑权限(否则无法移动文件)
- 提前配置目标文件夹的权限,将多数员工设为只读
- 测试时可手动将测试文档的审批状态改为「已批准」,验证脚本是否自动执行
内容的提问来源于stack exchange,提问作者RichardW
相关产品推荐
相关产品推荐

