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

如何设置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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:45:03