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

如何用Apps Script在数据录入后保护Google Spreadsheet工作表

Google Spreadsheet 批量锁定已录入数据 Apps Script 实现方案

你可以直接复用下面的脚本,等所有用户完成录入后一键执行,就能自动给所有工作表的已填充区域加编辑保护,防止误改或随意篡改。

  • 核心逻辑
    脚本会遍历电子表格下的所有工作表,自动识别每张表已填充数据的有效范围,给范围添加严格编辑保护,默认仅表格所有者和脚本运行者保留编辑权限,其他拥有表格编辑权的用户将无法修改锁定区域的内容。支持绑定自定义菜单,不用每次打开脚本编辑器操作。

  • 完整脚本代码

// 打开表格时自动生成自定义操作菜单
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('数据保护工具')
    .addItem('一键锁定所有已录入数据', 'protectAllFilledRanges')
    .addToUi();
}

// 批量保护所有工作表已填充区域主函数
function protectAllFilledRanges() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const allSheets = ss.getSheets();
  const currentUser = Session.getEffectiveUser().getEmail();

  allSheets.forEach(sheet => {
    // 获取当前工作表已使用的最大行列数,跳过空工作表
    const lastRow = sheet.getLastRow();
    const lastCol = sheet.getLastColumn();
    if (lastRow === 0 || lastCol === 0) return;

    // 选中已填充的完整数据区域
    const filledRange = sheet.getRange(1, 1, lastRow, lastCol);
    // 创建保护规则
    const protection = filledRange.protect()
      .setDescription(`录入完成自动保护_${new Date().toLocaleString()}`)
      .setWarningOnly(false); // 改为true则仅弹修改警告,不强制拦截

    // 移除其他用户的编辑权限,仅保留当前操作用户和表格所有者权限
    const editors = protection.getEditors();
    editors.forEach(editor => {
      if (editor.getEmail() !== currentUser) {
        protection.removeEditor(editor);
      }
    });
    protection.addEditor(ss.getOwner());
  });

  SpreadsheetApp.getUi().alert('操作完成:所有已录入数据已锁定,其他编辑用户无法修改');
}
  • 使用步骤

    1. 打开目标谷歌电子表格,点击顶部菜单栏「扩展程序」>「Apps 脚本」打开脚本编辑器
    2. 清空编辑器里默认的空白代码,把上面的完整代码粘贴进去,点击保存按钮,给脚本项目随便命名即可
    3. 回到谷歌表格页面刷新,等待5秒左右顶部菜单栏会出现名为「数据保护工具」的新菜单
    4. 等所有用户完成数据录入后,点击菜单内的「一键锁定所有已录入数据」,第一次运行会弹出授权提示,点击「高级」>「转到(你的脚本项目名)」走完授权流程即可,脚本执行完成后会弹出成功提示。
  • 自定义调整说明

    • 如果不需要强制拦截修改,只希望其他用户编辑时弹出风险警告,把代码中setWarningOnly(false)的参数改为true即可
    • 如果需要给特定用户保留锁定区域的编辑权限,在权限设置代码块里添加一行protection.addEditor('指定用户的邮箱地址')即可
    • 如果不需要自定义菜单,直接删掉onOpen函数部分,每次需要锁定数据时,在脚本编辑器顶部选中protectAllFilledRanges函数点击运行即可

注意:脚本仅会锁定执行时刻已经填充了内容的单元格区域,如果锁定后你又在空白区域新增了内容,需要重新运行一次脚本,才能把新录入的内容也纳入保护范围。

内容的提问来源于stack exchange,提问作者Mina Foe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:51:24