如何用Google Script批量修改多文件多用户权限并修复脚本
Google Sheets 权限管理脚本修复方案
需求说明
主表格包含以下列信息:
- 其他谷歌表格ID
- 目标邮箱
- 需赋予的权限角色(Viewer/Commenter/Editor)
- 权限移除复选框(勾选触发移除操作)
- 操作日期记录列(右侧新增)
2022年编写的授权脚本已失效,需修复实现权限赋予/移除双功能,并自动记录操作日期。
旧脚本代码
function shareFile() { const sheet = SpreadsheetApp.getActiveSheet(); const fileId = sheet.getRange(2, 1, sheet.getLastRow() - 1, 1).getValues().flat(); const emailAndPermissions = sheet.getRange(2, 2, sheet.getLastRow() - 1, 2).getValues(); for (i = 0; i < fileId.length; i++) { var fileToShare = DriveApp.getFileById(fileId[i]); if (emailAndPermissions[i][1] === "Viewer") { fileToShare.addViewer(emailAndPermissions[i][0]); } else if (emailAndPermissions[i][1] === "Commenter") { fileToShare.addCommenter(emailAndPermissions[i][0]); } else if (emailAndPermissions[i][1] === "Editor") { fileToShare.addEditor(emailAndPermissions[i][0]); } } }
修复后的脚本代码
function manageFilePermissions() { const sheet = SpreadsheetApp.getActiveSheet(); const dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, 5); // 覆盖A-E列:ID、邮箱、权限、复选框、操作日期 const data = dataRange.getValues(); const now = new Date(); for (let i = 0; i < data.length; i++) { const [fileId, email, role, removeCheckbox, _] = data[i]; // 跳过空行 if (!fileId || !email || !role) continue; try { const file = DriveApp.getFileById(fileId); const rowIndex = i + 2; // 对应表格行号(从第2行开始) if (removeCheckbox === true) { // 移除权限:先清空所有角色再重置复选框 file.removeEditor(email); file.removeCommenter(email); file.removeViewer(email); sheet.getRange(rowIndex, 4).setValue(false); } else { // 赋予对应权限 switch(role) { case "Viewer": file.addViewer(email); break; case "Commenter": file.addCommenter(email); break; case "Editor": file.addEditor(email); break; default: throw new Error(`无效权限角色:${role}`); } } // 记录操作日期 sheet.getRange(rowIndex, 5).setValue(now); } catch (error) { console.error(`处理行${i+2}时出错:${error.message}`); // 可选:在F列添加错误提示 // sheet.getRange(rowIndex, 6).setValue(`错误:${error.message}`); } } }
使用说明
表格列配置:确保列顺序严格对应:
- A列:文件ID
- B列:目标邮箱
- C列:权限角色(必须是
Viewer/Commenter/Editor) - D列:复选框(用于触发权限移除)
- E列:操作日期(脚本自动填充)
脚本部署:
- 打开主表格,点击「扩展程序」→「Apps脚本」
- 替换原有代码为修复后的脚本,保存并命名
- 返回表格,添加绘图/按钮并绑定
manageFilePermissions函数
权限授权:首次运行脚本时,按提示完成谷歌账号授权(需信任自定义脚本)
内容的提问来源于stack exchange,提问作者Bohdan
相关产品推荐
相关产品推荐

