如何在Google表格所在父文件夹批量创建带共享权限的文件夹
解决Google表格脚本在同目录创建文件夹并添加协作者的问题
你的代码存在几处逻辑错误,导致无法在表格所在文件夹创建目录,以下是修正后的完整代码及问题说明:
修正后的代码
function createFolders() { // 获取当前表格文件对象 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 获取表格所在的父文件夹 const parentFolder = DriveApp.getFileById(spreadsheet.getId()).getParents().next(); // 获取A、B列的有效数据范围(仅读取有内容的行) const dataRange = spreadsheet.getActiveSheet().getDataRange(); const data = dataRange.getValues(); // 遍历数据创建文件夹并添加协作者 for (let i = 0; i < data.length; i++) { const folderName = data[i][0]; const emailAddress = data[i][1]; if (folderName) { // 在目标父文件夹内创建子文件夹 const folder = parentFolder.createFolder(folderName); // 仅当邮箱不为空时添加编辑者,避免报错 if (emailAddress) { folder.addEditor(emailAddress); } } } }
关键修改说明
- 正确获取表格所在文件夹:原代码用
sheet.getParent()无法拿到Drive文件夹,改为通过表格文件ID获取其父文件夹,getParents().next()用于取出迭代器中的第一个父文件夹(表格通常仅存于一个文件夹中) - 避免无效空行处理:原代码读取整列
A:A、B:B会包含大量空行,改用getDataRange()仅读取有内容的单元格范围,提升脚本效率 - 在指定文件夹内创建目录:原代码调用
DriveApp.createFolder()默认在My Drive根目录创建,改为调用父文件夹对象的createFolder()方法,确保文件夹生成在表格所在目录 - 增加邮箱非空判断:防止邮箱单元格为空时执行
addEditor()抛出错误
内容的提问来源于stack exchange,提问作者J Dallimore
相关产品推荐
相关产品推荐

