咨询跨Google Drive账户定期同步指定文件夹的可行方案
跨Google Drive账户定期同步指定文件夹的可行方案
针对你需要从多个供应商Drive账户同步指定文件夹(含新增/删除图片)到自己账户做库存管理的需求,以下是几种实用方案:
1. Google官方方案
共享文件夹+本地同步工具
让供应商把目标文件夹共享给你的Drive账户(至少授予查看权限,若要获取文件完整元数据建议用评论者权限),然后用Google Drive桌面客户端把这个共享文件夹映射到本地。之后用系统自带的定时任务工具:
- Windows:用「任务计划程序」创建定时任务,调用
robocopy命令同步本地映射文件夹到你自己Drive的本地同步目录,设置/MIR参数实现镜像同步(自动同步新增、修改、删除的文件)。 - Mac:用「自动操作」创建定时工作流,用
rsync命令做镜像同步。
这种方式无需额外工具,依赖官方客户端和系统命令,稳定性高。
Google Apps Script 自定义同步脚本
自己写脚本实现定时双向同步,完全可控,适合有基础的用户:
核心逻辑是对比源文件夹(供应商共享)和目标文件夹的文件列表,同步新增文件、删除源中已不存在的文件。示例代码:
function syncSupplierInventory() { // 替换为实际的文件夹ID const sourceFolder = DriveApp.getFolderById("供应商共享文件夹ID"); const targetFolder = DriveApp.getFolderById("你的库存文件夹ID"); // 缓存源文件夹的文件(文件名→ID) const sourceFileMap = new Map(); sourceFolder.getFiles().forEach(file => { sourceFileMap.set(file.getName(), file.getId()); }); // 删除目标中源文件夹已移除的文件 targetFolder.getFiles().forEach(file => { if (!sourceFileMap.has(file.getName())) { file.setTrashed(true); } }); // 同步源文件夹新增的文件到目标 sourceFileMap.forEach((fileId, fileName) => { const existingTargetFiles = targetFolder.getFilesByName(fileName); if (!existingTargetFiles.hasNext()) { const sourceFile = DriveApp.getFileById(fileId); sourceFile.makeCopy(fileName, targetFolder); } }); }
设置定时执行:在脚本编辑器的「编辑」→「当前项目的触发器」中,添加时间驱动触发器,比如选择「周计时器」或「日计时器」,设置间隔为你需要的数日周期。
注意:脚本需要授权Drive访问权限,同步大量文件时要留意Google Apps Script的每日配额(对于数日一次的同步,完全足够)。
2. 第三方桌面同步工具
很多云同步工具支持Google Drive跨账户的镜像同步,这类工具可以图形化设置同步规则、定时周期,并且自动同步删除操作。你可以找支持Google Drive的同步工具,设置源为供应商共享的文件夹,目标为你的Drive文件夹,开启「镜像同步」模式即可。
关键注意事项
- 确保供应商的共享权限正确:至少能让你读取文件列表和内容,避免同步失败。
- 目标文件夹建议只用于同步,不要手动添加内容,防止被同步脚本误删。
- 测试同步逻辑:先小批量测试新增、删除操作,确保符合预期后再正式使用。
内容的提问来源于stack exchange,提问作者sauvignon
相关产品推荐
相关产品推荐

