如何用Google App Script获取多共享云端硬盘指定公共文件夹内文件路径?
用Google App Script获取多共享云端硬盘中特定文件夹的文件路径
直接上可运行的实现方案,核心是遍历共享硬盘、定位公共文件夹、提取文件并拼接路径:
完整代码实现
function getSharedDriveFilePaths() { const targetFolderName = "folder"; // 你的公共文件夹名称 const filePaths = []; // 获取所有有权访问的共享云端硬盘 const sharedDrives = Drive.Drives.list({pageSize: 100}); if (!sharedDrives.items || sharedDrives.items.length === 0) { console.log("没有可访问的共享云端硬盘"); return filePaths; } // 逐个处理共享硬盘 sharedDrives.items.forEach(drive => { const driveId = drive.id; const driveName = drive.name; // 搜索当前硬盘里的目标公共文件夹 const folderSearch = Drive.Files.list({ q: `mimeType='application/vnd.google-apps.folder' and name='${targetFolderName}'`, corpora: 'drive', driveId: driveId, includeItemsFromAllDrives: true, supportsAllDrives: true, pageSize: 10 }); if (folderSearch.items && folderSearch.items.length > 0) { const targetFolder = folderSearch.items[0]; // 提取目标文件夹下的所有非文件夹文件 const fileSearch = Drive.Files.list({ q: `'${targetFolder.id}' in parents and mimeType != 'application/vnd.google-apps.folder'`, corpora: 'drive', driveId: driveId, includeItemsFromAllDrives: true, supportsAllDrives: true, pageSize: 100 }); if (fileSearch.items && fileSearch.items.length > 0) { // 拼接成要求的路径格式并收集 fileSearch.items.forEach(file => { const path = `${driveName}/${targetFolderName}/${file.title}`; filePaths.push(path); console.log(path); }); } else { console.log(`[${driveName}] 目标文件夹内无文件`); } } else { console.log(`[${driveName}] 未找到名为${targetFolderName}的文件夹`); } }); return filePaths; }
关键配置与注意事项
- 启用高级Drive服务:在App Script编辑器顶部,点击「服务」→「添加服务」,找到「Drive API」并添加,否则代码会报错。
- 权限要求:运行脚本的账号必须拥有对应共享硬盘的读取权限,且目标文件夹允许该账号访问。
- 分页处理:示例中
pageSize设为100,如果你的共享硬盘/文件数量超过这个值,需要通过pageToken循环获取所有数据(可以在Drive.Drives.list和Drive.Files.list中加入pageToken参数实现)。 - 文件夹唯一性:代码默认取第一个匹配的
folder文件夹,如果共享硬盘中有重名文件夹,需要修改q参数增加筛选条件(比如按文件夹ID)。
内容的提问来源于stack exchange,提问作者Sai Santosh
相关产品推荐
相关产品推荐

