如何设置Google Sheets指定时间自动锁定解锁工作表并限制协作者编辑
Google Sheets定时工作表锁/解锁实现方案
前置准备
打开你需要设置权限管控的Google Sheets,点击顶部菜单栏「扩展程序」>「Apps Script」,进入脚本编辑器后删除默认生成的空白代码。
完整实现代码
将以下代码粘贴到脚本编辑器中,按需修改配置项即可:
// 自定义配置项,根据你的需求修改 const OWNER_EMAIL = "your-email@gmail.com"; // 替换为你自己的Google账号邮箱 const CONTROLLED_SHEET_NAMES = ["工作表1", "工作表2"]; // 填入要管控的工作表标签名,留空则管控所有工作表 // const CONTROLLED_SHEET_NAMES = []; // 取消本行注释、注释上一行即可管控表格内所有工作表 // 锁定工作表函数 function lockSheets() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); let sheets = []; if (CONTROLLED_SHEET_NAMES.length === 0) { sheets = spreadsheet.getSheets(); } else { CONTROLLED_SHEET_NAMES.forEach(name => { const sheet = spreadsheet.getSheetByName(name); if (sheet) sheets.push(sheet); }) } sheets.forEach(sheet => { // 清空该工作表之前存在的保护规则 const oldProtections = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET); oldProtections.forEach(item => item.remove()); // 新增保护规则 const newProtection = sheet.protect().setDescription(`定时锁定 ${new Date().toLocaleDateString()}`); // 仅保留所有者的编辑权限,移除其他所有协作者的编辑权限 newProtection.getEditors().forEach(editor => { if (editor.getEmail() !== OWNER_EMAIL) { newProtection.removeEditor(editor.getEmail()); } }) newProtection.setWarningOnly(false); }) } // 解锁工作表函数 function unlockSheets() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); let sheets = []; if (CONTROLLED_SHEET_NAMES.length === 0) { sheets = spreadsheet.getSheets(); } else { CONTROLLED_SHEET_NAMES.forEach(name => { const sheet = spreadsheet.getSheetByName(name); if (sheet) sheets.push(sheet); }) } sheets.forEach(sheet => { // 移除所有工作表保护规则,恢复协作者原有编辑权限 const existingProtections = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET); existingProtections.forEach(item => item.remove()); }) }
配置定时触发规则
- 脚本编辑完成后点击顶部保存按钮,给项目随便起个名字完成保存
- 点击编辑器左侧菜单栏的「触发器」(闹钟形状图标),点击右下角「添加触发器」
- 先配置锁定触发器:运行函数选择
lockSheets,事件源选择「时间驱动」,触发器类型选择「日计时器」,时间范围选择你想要的锁定时段(比如要22点锁定就选「晚上10点到11点」) - 再配置解锁触发器:运行函数选择
unlockSheets,同样选择时间驱动、日计时器,时间范围选择你想要的解锁时段 - 首次保存触发器时会弹出权限验证,选择你自己的Google账号,遇到「Google未验证此应用」提示时,点击「高级」>「前往(你的项目名)」完成授权即可
注意事项
- 必须使用表格所有者、或有表格管理权限的账号运行脚本,权限管控才会生效
- 锁定期间除你设置的所有者账号外,其余所有协作者仅能查看工作表,无法编辑
- 若后续需要调整管控的工作表范围,直接修改代码里的
CONTROLLED_SHEET_NAMES数组即可,无需修改触发器配置
内容的提问来源于stack exchange,提问作者gSheetLearner
相关产品推荐
相关产品推荐

