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

如何修改Google AppScript,排除前5行与Q-T列锁定Google Sheet

修改后的Google Apps脚本:锁定指定区域(第6行至最后数据行的A-P列)

以下是调整后的脚本,满足「仅锁定第6行至最后数据行的A-P列,排除前5行与Q-T列」的需求,同时保留原脚本「每次运行删除旧锁、指定用户可编辑锁定区域」的核心逻辑:

function installedOnOpen(e) {
  // 请设置允许编辑锁定区域的用户邮箱列表
  const editors = ["abc@abc.com","xyz@xyz.com"];
  // 请设置需要应用保护的工作表名称
  const sheetNames = ["SO"];

  const sheets = e.source.getSheets().filter(s => sheetNames.includes(s.getSheetName()));
  if (sheets.length == 0) return;

  sheets.forEach(s => {
    // 删除当前工作表所有已存在的范围保护
    const existingProtections = s.getProtections(SpreadsheetApp.ProtectionType.RANGE);
    if (existingProtections.length > 0) {
      existingProtections.forEach(protection => protection.remove());
    }

    const lastRow = s.getLastRow();
    // 仅当最后数据行≥6时,创建指定范围的保护
    if (lastRow >= 6) {
      // 锁定范围:第6行至最后数据行,A-P列(共16列)
      const protectedRange = s.getRange(6, 1, lastRow - 5, 16).protect();
      // 移除所有默认编辑者
      protectedRange.removeEditors(protectedRange.getEditors());
      // 添加指定的授权编辑者
      protectedRange.addEditors(editors);
      // 关闭域内用户编辑权限(如果开启的话)
      if (protectedRange.canDomainEdit()) {
        protectedRange.setDomainEdit(false);
      }
    }
  });
}

关键修改说明:

  • 保护范围调整:将原脚本中锁定整个数据区域的逻辑,改为锁定第6行至最后数据行的A-P列,通过getRange(6, 1, lastRow - 5, 16)实现:
    • 第一个参数6:起始行(从第6行开始)
    • 第二个参数1:起始列(A列)
    • 第三个参数lastRow - 5:保护的总行数(从第6行到最后数据行的行数)
    • 第四个参数16:保护的总列数(A到P列共16列)
  • 新增范围有效性判断:添加lastRow >= 6的条件,避免当工作表数据不足6行时创建无效的保护范围
  • 注释本地化:将原脚本中的英文注释改为中文,方便后续维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:27:24