如何在Google Sheets中按指定日期时间自动锁定指定单元格
在Google Sheets中实现指定日期时间后自动锁定对应单元格
可以通过Google Apps Script实现这个需求,以下是具体操作步骤:
1. 打开脚本编辑器
打开目标Google表格,点击顶部菜单栏「扩展程序」→「Apps Script」,进入脚本编辑界面。
2. 编写自动锁定脚本
删除编辑器内的默认代码,粘贴以下脚本:
function lockCellsWhenTimeReached() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const startRow = 2; // 假设表头在第1行,数据从第2行开始,可按需调整 const lastRow = sheet.getLastRow(); // 遍历每一行数据 for (let i = startRow; i <= lastRow; i++) { // 获取B列日期和C列时间,合并为完整目标时间 const dateVal = sheet.getRange(i, 2).getValue(); const timeVal = sheet.getRange(i, 3).getValue(); if (!dateVal || !timeVal) continue; // 跳过无日期时间的行 const targetTime = new Date(dateVal); targetTime.setHours(timeVal.getHours(), timeVal.getMinutes(), timeVal.getSeconds()); const currentTime = new Date(); // 若当前时间已达到或超过目标时间,锁定对应行的H、I列 if (currentTime >= targetTime) { const lockRange = sheet.getRange(i, 8, 1, 2); // 第8列是H,第9列是I,选中1行2列范围 const protection = lockRange.protect(); // 移除所有普通编辑者权限,仅保留表格所有者 const editors = protection.getEditors(); protection.removeEditors(editors); // 可选:如需允许特定用户编辑,取消注释下方代码并替换邮箱 // protection.addEditor('指定邮箱@xxx.com'); // 添加保护描述,便于识别 protection.setDescription(`自动锁定:行${i},触发时间${targetTime.toLocaleString()}`); } } }
3. 设置定时触发器
让脚本定期自动检查时间并执行锁定操作:
- 在脚本编辑器左侧点击「触发器」图标(时钟样式)。
- 点击「添加触发器」按钮,配置参数:
- 选择运行函数:
lockCellsWhenTimeReached - 事件源:选择「时间驱动」
- 时间类型:按需选择「小时计时器」或「天计时器」,建议选1小时间隔保证时效性
- 选择运行函数:
- 保存并完成脚本权限授权。
4. 测试验证
手动运行一次脚本确认效果:
- 在脚本编辑器点击运行按钮(三角图标),首次运行需按提示完成权限验证。
- 右键目标单元格,选择「保护范围」查看是否已成功锁定。
注意事项
- 确保B列设置为日期格式、C列设置为时间格式,否则脚本无法正确解析目标时间。
- 若目标单元格已有手动保护,脚本会覆盖原有保护设置。
- 脚本需由表格所有者授权,否则无法修改保护权限。
内容的提问来源于stack exchange,提问作者dzm11
相关产品推荐
相关产品推荐

