You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:10:49