14. 변경 이력
PropSheet은 데이터의 모든 변경사항을 자동으로 기록합니다. 누가 언제 어떤 값을 어떻게 변경했는지 셀 단위로 추적할 수 있으며, 필요하면 이전 값으로 되돌릴 수도 있습니다. 여러 사용자가 함께 작업할 때 데이터의 무결성과 투명성을 보장하는 핵심 기능입니다.
14.1 변경 이력 확인
특정 셀(필드)의 변경 이력을 확인하여 해당 값이 어떻게 변해왔는지 시간순으로 추적할 수 있습니다. 데이터의 변경 경위를 파악하거나, 잘못된 수정을 발견하는 데 유용합니다.
변경 이력 확인 방법
-
셀 우클릭
변경 이력을 확인하려는 셀(데이터가 입력된 칸)을 마우스 오른쪽 버튼으로 클릭합니다. 컨텍스트 메뉴(우클릭 메뉴)가 나타납니다. -
"변경 이력 보기" 선택
컨텍스트 메뉴에서 "변경 이력 보기" 항목을 클릭합니다. -
이력 패널 확인
화면에 변경 이력 패널이 나타나며, 해당 셀(해당 레코드의 해당 필드)에 대한 모든 변경 기록이 시간순으로 표시됩니다.
hs-01
셀 우클릭 컨텍스트 메뉴
스프레드시트에서 특정 셀을 우클릭한 상태. 컨텍스트 메뉴에 "변경 이력 보기" 항목이 강조 표시.
이력 정보 구성
변경 이력 패널에는 각 변경 건마다 다음 정보가 표시됩니다.
| 항목 | 설명 | 예시 |
|---|---|---|
| 변경자 이메일 | 해당 변경을 수행한 사용자의 Google 계정 이메일입니다. | agent@goldenrabbit.biz |
| 변경 시간 | 변경이 저장된 정확한 날짜와 시간입니다. 초 단위까지 표시됩니다. | 2026-03-26 14:30:22 |
| 이전값 | 변경되기 전의 값입니다. 최초 입력인 경우 "(비어있음)"으로 표시됩니다. | 150,000 |
| 새값 | 변경된 후의 값입니다. 현재 셀에 표시되는 값은 가장 최근 변경의 "새값"과 동일합니다. | 165,000 |
| 되돌리기 버튼 | 해당 시점의 값으로 되돌릴 수 있는 버튼입니다. 클릭하면 셀 값이 해당 이전값으로 복원됩니다. | - |
hs-02
변경 이력 패널
변경 이력 패널이 열린 상태. 3~4건의 변경 기록이 시간순으로 나열. 각 기록에 변경자 이메일, 시간, 이전값→새값, "되돌리기" 버튼이 표시.
이력이 기록되는 조건
- 인라인 편집 — 스프레드시트에서 셀을 클릭하여 직접 값을 수정하면 이력이 기록됩니다.
- 사이드 패널 편집 — 레코드 상세 보기 패널에서 필드 값을 변경해도 이력이 기록됩니다.
- 캘린더 뷰 편집 — 캘린더에서 이벤트를 수정해도 해당 필드의 이력이 기록됩니다.
- 되돌리기 — 이전 값으로 되돌린 경우에도 별도의 이력이 기록됩니다.
이력 보관 기간
변경 이력은 영구적으로 보관됩니다. 데이터베이스가 존재하는 한 모든 변경 기록을 조회할 수 있습니다. 다만, 레코드 자체를 삭제하면 해당 레코드의 변경 이력도 함께 삭제됩니다.
변경 이력은 영구적으로 보관됩니다. 데이터베이스가 존재하는 한 모든 변경 기록을 조회할 수 있습니다. 다만, 레코드 자체를 삭제하면 해당 레코드의 변경 이력도 함께 삭제됩니다.
14.2 이전 값으로 되돌리기
변경 이력에서 특정 시점의 값으로 셀을 복원할 수 있습니다. 실수로 데이터를 잘못 수정했거나, 이전 상태로 돌아가야 할 때 유용합니다.
되돌리기 방법
-
변경 이력 열기
되돌리려는 셀을 우클릭하고 "변경 이력 보기"를 선택하여 이력 패널을 엽니다. -
복원할 시점 찾기
이력 목록에서 되돌아가고 싶은 시점의 변경 기록을 찾습니다. 각 기록의 "이전값"과 "새값"을 확인하여 원하는 값이 어느 시점에 있었는지 파악합니다. -
"되돌리기" 버튼 클릭
원하는 시점의 변경 기록 옆에 있는 "되돌리기" 버튼을 클릭합니다. -
확인
확인 대화상자가 나타납니다. "확인"을 클릭하면 셀 값이 해당 시점의 값으로 즉시 복원됩니다.
hs-03
되돌리기 버튼 클릭
변경 이력 패널에서 특정 변경 기록의 "되돌리기" 버튼에 마우스 커서가 올려진 상태. 해당 기록의 이전값이 강조 표시.
되돌리기의 동작 원리
- 되돌리기도 이력에 기록됩니다 — 되돌리기를 수행하면 "되돌리기에 의한 변경"이라는 새로운 이력이 추가됩니다. 따라서 되돌리기 자체를 다시 되돌리는 것도 가능합니다.
- 단일 셀 단위 — 되돌리기는 해당 셀(해당 레코드의 해당 필드)에만 적용됩니다. 다른 셀이나 다른 레코드에는 영향을 주지 않습니다.
- 즉시 반영 — 되돌리기를 수행하면 스프레드시트에 즉시 반영됩니다. 다른 사용자도 폴링을 통해 변경된 값을 확인할 수 있습니다.
되돌리기 활용 예시
| 상황 | 대처 방법 |
|---|---|
| 매물 가격을 1억 5천에서 1억 6천 5백으로 수정했는데, 원래 1억 5천이 맞는 것으로 확인됨 | 가격 셀의 변경 이력에서 1억 5천 시점을 찾아 "되돌리기" 클릭 |
| 팀원이 실수로 주소 필드를 잘못 수정함 | 주소 셀의 변경 이력에서 올바른 주소가 있던 시점을 찾아 "되돌리기" 클릭 |
| 여러 번의 수정을 거쳤는데, 최초 입력 값으로 돌아가고 싶음 | 변경 이력의 가장 오래된 기록에서 "되돌리기" 클릭하여 최초 입력값으로 복원 |
주의: 되돌리기는 단일 셀에만 적용됩니다
되돌리기는 선택한 하나의 셀에만 적용됩니다. 레코드 전체를 이전 상태로 되돌리는 기능은 제공하지 않습니다. 여러 필드를 동시에 되돌려야 한다면, 각 필드별로 개별적으로 되돌리기를 수행해야 합니다.
되돌리기는 선택한 하나의 셀에만 적용됩니다. 레코드 전체를 이전 상태로 되돌리는 기능은 제공하지 않습니다. 여러 필드를 동시에 되돌려야 한다면, 각 필드별로 개별적으로 되돌리기를 수행해야 합니다.
되돌리기 전에 확인하세요
되돌리기를 수행하기 전에, 이력 패널에서 "이전값"과 "새값"을 꼼꼼히 확인하세요. 특히 여러 번의 변경이 있었을 경우, 어느 시점으로 되돌려야 하는지 정확히 파악한 후 버튼을 클릭하는 것이 안전합니다.
되돌리기를 수행하기 전에, 이력 패널에서 "이전값"과 "새값"을 꼼꼼히 확인하세요. 특히 여러 번의 변경이 있었을 경우, 어느 시점으로 되돌려야 하는지 정확히 파악한 후 버튼을 클릭하는 것이 안전합니다.
14.3 실시간 동기화
PropSheet은 여러 사용자가 동시에 같은 데이터베이스를 열고 작업할 때, 다른 사용자의 변경사항이 자동으로 반영되는 실시간 동기화 기능을 제공합니다. 수동으로 새로고침하지 않아도 최신 데이터를 확인할 수 있습니다.
동기화 방식: 폴링(Polling)
PropSheet의 실시간 동기화는 폴링(Polling) 방식으로 동작합니다. 브라우저가 일정 간격으로 서버에 변경사항이 있는지 자동으로 확인하고, 변경된 데이터가 있으면 화면에 반영합니다.
- 자동 확인 주기 — 브라우저는 일정 간격(수 초)으로 서버에 데이터 변경 여부를 자동으로 확인합니다. 사용자가 별도의 조작을 할 필요가 없습니다.
- 변경된 셀만 업데이트 — 전체 페이지를 다시 불러오는 것이 아니라, 변경된 셀의 값만 선택적으로 업데이트합니다. 현재 편집 중인 셀은 충돌을 방지하기 위해 업데이트되지 않습니다.
- 네트워크 효율 — 폴링 요청은 경량화되어 있어 네트워크 부하가 최소화됩니다. 변경사항이 없으면 빈 응답만 반환됩니다.
동기화 동작 시나리오
-
사용자 A가 매물 가격을 수정
사용자 A가 특정 매물의 가격 셀을 "1억 5천"에서 "1억 6천"으로 수정하고 저장합니다. -
서버에 변경사항 저장
변경된 값이 서버의 데이터베이스에 저장되고, 변경 이력도 기록됩니다. -
사용자 B의 화면에 자동 반영
사용자 B의 브라우저가 다음 폴링 시점에 변경사항을 감지하고, 해당 셀의 값을 "1억 6천"으로 자동 업데이트합니다. 사용자 B는 별도의 새로고침 없이 변경된 값을 확인할 수 있습니다.
hs-04
실시간 동기화 동작 화면
두 브라우저 창이 나란히 표시된 상태(또는 한 화면에서 동기화 반영 전후 비교). 한쪽에서 수정한 셀 값이 다른쪽에 자동으로 반영된 모습. 변경된 셀이 하이라이트 표시.
동기화 시 주의사항
| 상황 | 동작 | 설명 |
|---|---|---|
| 다른 사용자가 수정한 셀 | 자동 업데이트 | 현재 편집 중이 아닌 셀은 변경된 값으로 자동 업데이트됩니다. |
| 내가 편집 중인 셀을 다른 사용자가 수정 | 편집 완료 후 반영 | 현재 편집 중인 셀은 편집이 완료(저장 또는 포커스 이동)된 후에 서버의 최신 값을 확인합니다. |
| 새로운 레코드 추가 | 자동 표시 | 다른 사용자가 추가한 새 레코드가 폴링 시점에 화면에 자동으로 나타납니다. |
| 레코드 삭제 | 자동 제거 | 다른 사용자가 삭제한 레코드가 폴링 시점에 화면에서 자동으로 사라집니다. |
| 네트워크 연결 끊김 | 재연결 시 동기화 | 네트워크가 끊기면 폴링이 일시 중단되며, 연결이 복구되면 자동으로 최신 데이터를 가져옵니다. |
낙관적 잠금(Optimistic Locking)
PropSheet은 낙관적 잠금 방식을 사용합니다. 두 사용자가 동시에 같은 셀을 수정하려 할 때, 먼저 저장한 사용자의 변경이 반영되고, 나중에 저장하려는 사용자에게는 충돌 알림이 표시됩니다. 이 경우 최신 값을 확인한 후 다시 수정할 수 있습니다.
PropSheet은 낙관적 잠금 방식을 사용합니다. 두 사용자가 동시에 같은 셀을 수정하려 할 때, 먼저 저장한 사용자의 변경이 반영되고, 나중에 저장하려는 사용자에게는 충돌 알림이 표시됩니다. 이 경우 최신 값을 확인한 후 다시 수정할 수 있습니다.
협업 시 권장사항
- 역할 분담 — 같은 레코드를 동시에 편집하기보다는 담당 영역을 나누어 작업하면 충돌을 최소화할 수 있습니다.
- 변경 이력 활용 — 누가 어떤 값을 변경했는지 변경 이력으로 확인할 수 있으므로, 의도치 않은 수정이 있었는지 주기적으로 확인하세요.
- 뷰 분리 — 팀원별로 다른 뷰(필터)를 사용하면 각자 담당하는 데이터만 보면서 작업할 수 있어 실수를 줄일 수 있습니다.
동시 편집 충돌 시 대처 방법
같은 셀을 두 사용자가 거의 동시에 수정하면 나중에 저장한 사용자에게 "다른 사용자가 이미 이 값을 변경했습니다"라는 충돌 알림이 표시됩니다. 이 경우 최신 값을 확인한 후 필요하면 다시 수정하세요. 강제로 저장하면 먼저 저장된 변경사항이 덮어쓰기될 수 있으니 주의하세요.
같은 셀을 두 사용자가 거의 동시에 수정하면 나중에 저장한 사용자에게 "다른 사용자가 이미 이 값을 변경했습니다"라는 충돌 알림이 표시됩니다. 이 경우 최신 값을 확인한 후 필요하면 다시 수정하세요. 강제로 저장하면 먼저 저장된 변경사항이 덮어쓰기될 수 있으니 주의하세요.