如何修改Google Apps Script实现从表格取邮箱设置文件夹编辑权限
解决Google Apps Script中"var Email is not defined"错误并设置文件夹编辑权限
完整修正脚本
function createFoldersWithEditors() { // 获取当前活动表格及数据(第2行开始,跳过表头) const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, 3); const data = dataRange.getValues(); // 替换为你的共享云端硬盘ID(从共享盘URL的folder/后获取) const sharedDriveId = "你的共享云端硬盘ID"; const sharedDriveRoot = DriveApp.getFolderById(sharedDriveId); // 遍历每行数据创建文件夹并设置权限 data.forEach(row => { const folderName = row[0]; // A列:文件夹名称 const editorEmail = row[2]; // C列:编辑者邮箱 // 跳过空行(A列或C列为空时不处理) if (!folderName || !editorEmail) return; try { // 在共享盘创建文件夹 const newFolder = sharedDriveRoot.createFolder(folderName); // 给文件夹添加编辑者权限 newFolder.addEditor(editorEmail); Logger.log(`已完成:文件夹「${folderName}」创建,编辑者:${editorEmail}`); } catch (err) { Logger.log(`失败:文件夹「${folderName}」创建出错 - ${err.message}`); } }); }
关键修正点说明
正确获取邮箱数据
从表格获取的data是二维数组,每行的row[2]对应C列数据(数组索引从0开始,A=0、B=1、C=2),确保邮箱和文件夹名称一一对应。变量作用域修正
将editorEmail变量定义在循环内部,保证每次遍历都能拿到当前行的邮箱值,避免出现"变量未定义"的作用域问题。空值与错误处理
添加空值判断跳过无效行,加入try-catch捕获创建或权限设置时的报错(比如重名文件夹、无效邮箱),方便排查问题。共享盘定位
通过共享盘ID明确指定文件夹创建位置,确保文件夹生成在目标共享云端硬盘中。
额外扩展(多邮箱场景)
如果C列是逗号分隔的多个邮箱,可修改权限设置部分:
// 拆分并处理多个邮箱 const editorEmails = row[2].split(',').map(email => email.trim()); editorEmails.forEach(email => { if (email) newFolder.addEditor(email); });
内容的提问来源于stack exchange,提问作者Michael_L
相关产品推荐
相关产品推荐

