본문으로 건너뛰기
엑셀·구글시트 자동화 실험

엑셀·구글시트 자동화 실험No. 234

셀 보호와 시트 잠금 설정 후 입력 칸만 수정되게 하는 방법

한 열이 연노랑으로 구분된 격자 화면

입력 칸과 계산 칸을 먼저 구분합니다

두 가지 색으로 나뉜 종이 격자

하나씩 확인

입력 범위 구분

  • 직접 입력할 셀 구분
  • 수식이 있는 셀 확인
  • 업무 양식에 맞게 범위 지정

예시에서는 B2:B100을 입력 칸으로 사용하고 나머지 영역은 수정 제한 대상으로 정합니다. 실제 문서에 적용할 때는 이 범위를 업무 양식에 맞게 바꿔야 합니다. 숫자를 직접 적는 칸과 수식으로 결과가 나오는 칸이 섞여 있다면, 수식이 있는 셀을 먼저 확인하는 순서가 적절합니다.

엑셀의 셀 잠금 속성은 시트 보호를 실행해야 편집 제한으로 작동합니다. 셀 서식에서 잠금이 선택되어 있어도 시트가 보호되지 않은 상태라면 내용을 수정할 수 있습니다. 반대로 입력 칸의 잠금을 풀지 않고 시트부터 보호하면, 입력해야 하는 영역까지 막힐 수 있습니다.

구글시트에서는 시트를 보호하면서 일부 셀을 예외로 지정할 수 있습니다. 다만 예외 범위라고 해서 문서의 모든 이용자가 입력할 수 있는 것은 아닙니다. 문서 자체에 편집 권한이 있어야 하며, 보기 권한만 가진 이용자는 해당 칸도 수정할 수 없습니다.

작업 전에는 원본과 구분되는 사본을 준비하는 편이 좋습니다. 수식이 들어 있는 영역, 직접 입력할 영역, 행을 추가할 가능성을 함께 확인합니다. 입력 범위를 B2:B100으로 정했다면 B101부터는 같은 방식으로 입력되지 않을 수 있으므로, 앞으로 사용할 범위도 설정에 반영해야 합니다.

입력할 셀을 먼저 정하고 보호를 적용해야 필요한 수정까지 막는 일을 줄일 수 있습니다

설정 순서와 코드를 그대로 적용합니다

엑셀에서는 다음 순서로 설정합니다. 이미 일부 셀의 잠금이 해제된 문서라면 전체 범위를 잠금 상태로 맞춘 뒤 시작해야 예외가 남는 일을 줄일 수 있습니다. 기존 시트 보호가 적용되어 있다면 먼저 해제할 권한이 필요합니다.

같은 격자가 나란히 놓인 종이 두 장

주의할 점

보호 전 확인할 점

  • 기존 보호 해제 권한 확인
  • 전체 셀을 잠금 상태로 설정
  • 입력 칸의 잠금 해제
  1. 시트 전체를 선택하고 셀 서식의 보호 항목에서 잠금을 선택합니다
  2. 입력할 B2:B100을 선택하고 같은 항목에서 잠금을 해제합니다
  3. 검토 메뉴에서 시트 보호를 실행합니다
  4. 허용할 작업을 확인하고 필요한 경우 암호를 설정합니다
  5. 입력 칸과 수식 칸을 각각 수정해 제한 상태를 확인합니다

암호를 설정했다면 관리 기준에 따라 별도로 관리합니다. 시트 보호 암호와 파일을 열 때 사용하는 암호는 역할이 다릅니다. 편집 실수를 줄이려는 설정인지, 파일 내용에 대한 접근 자체를 제한하려는 설정인지 먼저 구분해야 합니다.

구글시트는 데이터 메뉴의 시트 및 범위 보호에서 같은 목적의 설정을 진행할 수 있습니다. 아래는 연결된 Apps Script에서 현재 선택된 시트를 보호하고 B2:B100을 예외로 지정하는 예시입니다. 코드는 일반 셀에 붙여 넣는 수식이 아니며, 확장 프로그램의 Apps Script 편집기에서 사용합니다.

function protectInputSheet() {

const sheet = SpreadsheetApp.getActiveSheet();

const label = '입력 칸 제외 보호';

const protections = sheet.getProtections(

SpreadsheetApp.ProtectionType.SHEET

);

const protection = protections.find(

item => item.getDescription() === label

) || sheet.protect().setDescription(label);

protection.setWarningOnly(false);

protection.setUnprotectedRanges([

sheet.getRange('B2:B100')

]);

const user = Session.getEffectiveUser();

protection.addEditor(user);

protection.removeEditors(protection.getEditors());

한 열의 일부 칸을 두른 파란 테두리

Q실행 전 무엇을 확인하나요

대상 시트와 실행 권한, 보호 영역의 편집자를 확인합니다.

if (protection.canDomainEdit()) {

protection.setDomainEdit(false);

}

}

실행 전에는 대상 시트가 선택되어 있는지 확인합니다. 실행 과정에서 문서 접근 권한 승인이 필요할 수 있으며, 조직 계정의 정책이나 실행자의 권한에 따라 작업이 제한될 수 있습니다. 이 코드는 보호 영역의 기존 편집자 목록도 변경하므로 공동 작업 문서에서는 허용할 사람을 먼저 정해야 합니다.

각 설정이 맡는 역할을 구분합니다

첫 줄의 함수 이름은 실행할 작업을 구분하는 이름입니다. SpreadsheetApp.getActiveSheet()는 현재 선택된 시트를 가져옵니다. 시트가 여러 개인 문서에서는 실행할 때 선택된 탭에 따라 대상이 달라지므로, 특정 탭만 처리해야 한다면 시트 이름으로 대상을 지정하는 방식으로 바꾸는 편이 적절합니다.

label은 코드가 관리할 보호 설정의 설명입니다. getProtections는 해당 시트의 보호 설정을 가져오고, find는 같은 설명이 있는 항목을 찾습니다. 일치하는 항목이 있으면 재사용하고 없으면 새로 만듭니다. 같은 설명의 항목이 여러 개라면 첫 항목만 선택하므로 설명 이름을 구분해 관리해야 합니다.

setWarningOnly(false)는 경고만 보여 주는 방식 대신 편집 권한에 따른 제한을 적용합니다. 경고 방식에서는 안내를 확인한 뒤 편집을 계속할 수 있으므로, 수식 변경을 막으려는 목적과 구분해야 합니다. setUnprotectedRanges는 시트 보호에서 제외할 범위를 정하며, 여기서는 B2:B100을 지정합니다.

Session.getEffectiveUser()는 스크립트가 어떤 사용자 권한으로 실행되는지 확인하는 부분입니다. 이어지는 코드는 해당 사용자를 보호 영역의 편집자로 추가한 뒤 편집자 목록을 정리합니다. 실행 사용자와 문서 소유자는 제거할 수 없는 예외가 있으므로, 이 코드를 자신까지 편집할 수 없게 만드는 장치로 이해하면 안 됩니다.

키보드 옆에 놓인 닫힌 자물쇠

이렇게

편집 권한 확인 순서

  1. 실행 사용자 권한 확인
  2. 도메인 편집 허용 확인
  3. 그룹으로 부여된 권한 확인

마지막 조건문은 도메인 단위 편집이 허용된 경우 이를 해제합니다. 개인 계정끼리 공유한 문서와 조직 계정으로 공유한 문서는 권한 구조가 다를 수 있습니다. 그룹을 통해 부여된 권한도 별도로 확인해야 하며, 코드가 끝났다는 사실만으로 모든 이용자의 편집 제한이 확인되는 것은 아닙니다.

보호 설정의 성공 여부는 실제 공동 작업자의 권한으로 확인해야 판단할 수 있습니다

공동 작업 방식에 맞춰 범위를 조정합니다

입력 칸이 한곳에 모인 문서는 예외 범위를 지정하는 방식이 관리하기 쉽습니다. 입력 영역이 여러 곳으로 나뉜 문서는 필요한 범위를 각각 등록해야 합니다. 구글시트 예시에서 B열과 D열을 열어 두려면 setUnprotectedRanges에 sheet.getRange('B2:B100')과 sheet.getRange('D2:D100')을 함께 넣는 방식으로 수정합니다.

반대로 계산식이 있는 좁은 영역만 제한하고 나머지는 자유롭게 편집해야 한다면, 해당 범위만 보호하는 구성이 더 적절할 수 있습니다. 양식 전체를 유지해야 하는 문서와 자유롭게 행을 늘리는 작업 문서는 필요한 제한이 다릅니다. 입력 방식이 다른 문서에 같은 설정을 복사하면 불필요한 수정 제한이 생길 수 있습니다.

엑셀에서 정렬이나 필터 사용까지 필요하다면 시트 보호 창의 허용 항목도 함께 검토해야 합니다. 허용 항목을 선택해도 잠긴 셀의 구성이나 기능별 조건에 따라 동작이 제한될 수 있습니다. 실제 양식에서 필터 변경, 정렬, 행 추가처럼 사용할 작업을 각각 확인하는 절차가 필요합니다.

설정 후에는 편집 권한이 있는 다른 공동 작업자 계정으로 입력 칸을 수정하고, 계산 칸의 변경이 제한되는지 확인합니다. 문서 소유자나 보호 영역의 편집이 허용된 계정으로만 확인하면 다른 이용자에게 적용되는 상태를 놓칠 수 있습니다. 기존에 별도로 보호한 범위가 있다면 예외 입력 칸과 겹치는지도 살펴야 합니다.

시트 보호는 공유된 문서의 내용을 비밀로 만드는 기능이 아닙니다. 입력 실수나 수식 변경을 줄이는 용도로 사용하고, 내용을 볼 수 있는 사람은 파일 공유 권한에서 따로 관리해야 합니다. 입력 범위, 보호 영역의 편집자, 행 추가 시 처리 방법을 함께 기록하면 양식이 바뀔 때 다시 점검할 기준이 됩니다.

목록으로

이 글은 엑셀·구글시트 자동화 실험에서 발행했습니다. 인용·링크는 자유롭고, 본문·그림의 복제 게시는 삼가 주세요.