如何在Google Sheet中检测用户邮箱并写入单元格,管控共享权限?
Google Sheet 用户权限校验实现方案
一、获取当前用户邮箱并写入单元格
使用Google Apps Script编写代码,获取当前登录用户的邮箱并写入指定单元格:
function getCurrentUserEmail() { const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const userEmail = Session.getActiveUser().getEmail(); // 将邮箱写入A1单元格,可自行修改目标位置 activeSheet.getRange("A1").setValue(userEmail); return userEmail; }
二、与受限用户列表比对并拦截无权限用户
假设受限用户列表存储在名为Sheet2的工作表A列(从A1开始),扩展代码实现权限校验:
function checkUserPermission() { const mainSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const restrictedSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); const userEmail = Session.getActiveUser().getEmail(); // 写入当前用户邮箱到A1 mainSheet.getRange("A1").setValue(userEmail); // 读取所有受限用户邮箱 const restrictedEmails = restrictedSheet.getRange("A1:A" + restrictedSheet.getLastRow()).getValues().flat(); // 校验用户权限 if (!restrictedEmails.includes(userEmail) && userEmail !== "") { SpreadsheetApp.getUi().alert("你无此表格的访问权限!"); // 可选:记录无权限用户信息到B1单元格 mainSheet.getRange("B1").setValue("无权限访问:" + userEmail); } else if (userEmail === "") { // 拦截匿名用户 SpreadsheetApp.getUi().alert("请登录Google账号后访问!"); } }
三、设置自动触发
- 打开Google Sheet,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 将代码粘贴到脚本编辑器,保存项目
- 点击左侧「触发器」图标,添加新触发器:
- 选择函数:
checkUserPermission - 事件源:「从电子表格」
- 事件类型:「打开时」
- 选择函数:
- 保存触发器,首次运行按提示完成权限验证即可
内容的提问来源于stack exchange,提问作者Mo396
相关产品推荐
相关产品推荐

