如何使用GAS设置Google文件被共享时自动触发邮件通知
共享事件邮件通知实现方案
目前Google Apps Script没有原生针对文件共享事件的触发器,你可以通过以下两种可行方案实现需求:
方案1:通用账号适用(免费版/付费版均可):时间驱动触发器定期扫描权限变动
实现逻辑为定期拉取文件的当前访问权限列表,和上一次存储的快照做对比,发现权限变动即触发邮件通知:
- 操作步骤:
- 打开目标表格,点击顶部菜单「扩展程序」-「Apps Script」进入脚本编辑器
- 粘贴如下代码,替换代码内的文件ID和通知邮箱为你的实际值
// 首次运行初始化权限快照,只需要运行1次 function initPermissionSnapshot() { // 替换为你的表格文件ID const FILE_ID = "xxx"; const file = DriveApp.getFileById(FILE_ID); const currentPermissions = [ ...file.getEditors().map(editor => editor.getEmail()), ...file.getViewers().map(viewer => viewer.getEmail()) ]; PropertiesService.getDocumentProperties().setProperty( "lastPermissionSnapshot", JSON.stringify(currentPermissions) ); } // 权限扫描逻辑,后续由触发器自动运行 function checkShareChange() { // 替换为你的表格文件ID const FILE_ID = "xxx"; // 替换为接收通知的邮箱 const NOTIFY_EMAIL = "your-email@example.com"; const file = DriveApp.getFileById(FILE_ID); const currentPermissions = [ ...file.getEditors().map(editor => editor.getEmail()), ...file.getViewers().map(viewer => viewer.getEmail()) ]; const lastPermissions = JSON.parse( PropertiesService.getDocumentProperties().getProperty("lastPermissionSnapshot") || "[]" ); // 检测新增的共享权限 const addedUsers = currentPermissions.filter(email => !lastPermissions.includes(email)); // 检测被移除的共享权限 const removedUsers = lastPermissions.filter(email => !currentPermissions.includes(email)); if (addedUsers.length || removedUsers.length) { let mailContent = `文件《${file.getName()}》发生共享权限变动:\n`; if (addedUsers.length) mailContent += `\n新增访问用户:\n${addedUsers.join("\n")}`; if (removedUsers.length) mailContent += `\n移除访问用户:\n${removedUsers.join("\n")}`; MailApp.sendEmail(NOTIFY_EMAIL, `文件共享变动通知:${file.getName()}`, mailContent); // 更新权限快照 PropertiesService.getDocumentProperties().setProperty( "lastPermissionSnapshot", JSON.stringify(currentPermissions) ); } }- 先选中
initPermissionSnapshot函数运行一次,完成初始权限快照的存储,授权时按照提示完成权限验证即可 - 进入脚本编辑器左侧「触发器」页面,点击「添加触发器」,选择要运行的函数为
checkShareChange,触发器类型选择「时间驱动」,按照你的需求设置运行频率(最短可设置为每分钟运行一次)
- 优缺点:适配所有账号类型,不需要管理员权限,缺点是不是完全实时触发,存在最长等于你设置的运行频率的延迟
方案2:Google Workspace企业/教育版账号适用:管理员审计日志告警
如果你使用的是企业版或教育版Workspace账号,可以直接在管理员后台配置告警规则,不需要写代码:
- 操作步骤:进入Google Admin后台,选择「报告」-「审计日志」-「Drive日志」,点击「创建告警规则」,触发条件设置为「文档共享事件」,通知渠道设置为你的邮箱即可
- 优缺点:完全实时触发,不需要维护代码,缺点是仅适用于付费版Workspace账号,且需要管理员权限配置
补充说明:目前Google Drive原生确实不支持给不同编辑者设置差异化的共享开关权限,暂时只能通过上述权限监控的方式做事后管控,没有原生的事前限制方案。
内容的提问来源于stack exchange,提问作者Olivia K
相关产品推荐
相关产品推荐

