Google Apps Script无法查找共享云端硬盘文件夹问题求助
解决共享云端硬盘中DriveApp.getFoldersByName()返回false的问题
核心原因
DriveApp.getFoldersByName()默认仅搜索当前用户的个人云端硬盘,不会自动包含共享云端硬盘。你同事的脚本没有指定共享盘的访问范围,所以无法定位到共享盘中的目标文件夹。
解决方案
1. 遍历共享云端硬盘并搜索目标文件夹
通过DriveApp.getSharedDrives()获取所有有权限的共享盘,再在目标共享盘内逐层查找文件夹:
function findContentDocsFolder() { // 遍历所有共享云端硬盘 const sharedDrives = DriveApp.getSharedDrives(); while (sharedDrives.hasNext()) { const currentDrive = sharedDrives.next(); // 匹配目标共享盘名称(替换为实际共享盘名称) if (currentDrive.getName() === "你的共享云端硬盘名称") { // 在共享盘内搜索"Content Planning"文件夹 const planningFolders = currentDrive.getFoldersByName("Content Planning"); if (planningFolders.hasNext()) { const planningFolder = planningFolders.next(); // 查找子文件夹"Content Docs" const docsFolders = planningFolder.getFoldersByName("Content Docs"); if (docsFolders.hasNext()) { const targetFolder = docsFolders.next(); Logger.log("找到目标文件夹:" + targetFolder.getName()); return targetFolder; } } } } Logger.log("未找到目标文件夹"); return null; }
2. 通过共享盘ID直接定位(效率更高)
如果知道共享云端硬盘的ID,可直接通过getSharedDrive(id)获取共享盘,跳过遍历步骤:
function findFolderBySharedDriveId() { const sharedDriveId = "替换为你的共享云端硬盘ID"; try { const targetDrive = DriveApp.getSharedDrive(sharedDriveId); const planningFolders = targetDrive.getFoldersByName("Content Planning"); if (planningFolders.hasNext()) { const planningFolder = planningFolders.next(); const docsFolders = planningFolder.getFoldersByName("Content Docs"); if (docsFolders.hasNext()) { const targetFolder = docsFolders.next(); Logger.log("找到目标文件夹:" + targetFolder.getName()); return targetFolder; } } } catch (error) { Logger.log("访问共享盘失败:" + error.message); } return null; }
3. 确认脚本权限授权
确保同事第一次运行脚本时,在授权弹窗中选择允许访问所有云端硬盘(而非仅个人云端硬盘),否则脚本无法获取共享盘的访问权限。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

