
엑셀은 익숙하지만 동시 편집이 안 되고, WMS는 비용 부담이 크다면 구글 시트가 현실적인 중간 지점이 됩니다. 실시간 공유, 모바일 접속, 자동화 스크립트까지 — 무료로 구현할 수 있는 기능이 생각보다 많습니다.
이 글에서는 창고 입출고 관리에 바로 쓸 수 있는 구글 시트 자동화 구성을 단계별로 안내합니다. Apps Script 경험이 없어도 복사·붙여넣기로 바로 적용할 수 있습니다.
📋 이 글에서 다루는 내용
- 구글 시트 재고관리의 장점과 한계
- 기본 시트 구조 설계 (3시트 구성)
- 입출고 자동 반영 수식 구성
- Apps Script로 자동화하기 (실전 코드 포함)
- 실전 운영 팁과 주의사항
1. 구글 시트 재고관리의 장점과 한계
구글 시트의 가장 큰 강점은 실시간 동시 편집입니다. 입고 담당자와 출고 담당자가 같은 시트에서 동시에 작업해도 충돌 없이 데이터가 쌓입니다.
2. 기본 시트 구조 설계 — 3시트 구성
📄 시트 1: SKU 마스터
SKU코드 / 품명 / 단위 / 안전재고수량 / 로케이션 / 현재고(자동계산)
📄 시트 2: 입출고 이력
날짜 / 유형(입고·출고·반품) / SKU코드 / 수량 / 담당자 / 비고
📄 시트 3: 일별 재고 스냅샷
날짜 / SKU코드 / 마감재고 (Apps Script 자동 기록)
3. 입출고 자동 반영 수식
=SUMIFS(입출고이력!D:D, 입출고이력!C:C, A2, 입출고이력!B:B, “입고”)
– SUMIFS(입출고이력!D:D, 입출고이력!C:C, A2, 입출고이력!B:B, “출고”)
+ SUMIFS(입출고이력!D:D, 입출고이력!C:C, A2, 입출고이력!B:B, “반품”)
– SUMIFS(입출고이력!D:D, 입출고이력!C:C, A2, 입출고이력!B:B, “출고”)
+ SUMIFS(입출고이력!D:D, 입출고이력!C:C, A2, 입출고이력!B:B, “반품”)
4. Apps Script 자동화
function saveInventorySnapshot() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const master = ss.getSheetByName(‘SKU마스터’);
const snapshot = ss.getSheetByName(‘일별스냅샷’);
const today = new Date();
const data = master.getRange(‘A2:F’ + master.getLastRow()).getValues();
data.forEach(row => { if (row[0]) snapshot.appendRow([today, row[0], row[5]]); });
}
const ss = SpreadsheetApp.getActiveSpreadsheet();
const master = ss.getSheetByName(‘SKU마스터’);
const snapshot = ss.getSheetByName(‘일별스냅샷’);
const today = new Date();
const data = master.getRange(‘A2:F’ + master.getLastRow()).getValues();
data.forEach(row => { if (row[0]) snapshot.appendRow([today, row[0], row[5]]); });
}
5. 실전 운영 팁
⚠️ 자주 발생하는 실수
- SKU마스터 현재고 셀을 직접 수정 → 수식이 깨짐. 시트 보호 필수
- 입출고이력 행 삭제 시 재고 틀어짐 → 취소 유형 행 추가로 처리
📌 핵심 정리
- 구글 시트는 팀 동시 접속·무료·모바일이 필요한 소~중형 창고에 최적
- 3시트 구조(마스터·이력·스냅샷)로 시작하면 확장이 용이
- SUMIFS 수식 + Apps Script 트리거 조합으로 핵심 자동화 구현 가능
- 일 출고 300건·SKU 3,000개를 넘으면 전용 SaaS로 전환 검토