피드로 돌아가기
Dev.toBackend
원문 읽기
API Call 최적화로 1만 행 중복 제거 시간을 6분에서 2초로 단축
Remove duplicate rows in Google Sheets
AI 요약
Context
Google Apps Script 환경에서 개별 행을 삭제하는 deleteRow 방식의 비효율성에 따른 성능 병목 발생. 행 삭제 시마다 하위 행의 인덱스가 재조정되는 오버헤드와 반복적인 API 호출로 인한 실행 시간 초과 문제가 핵심 한계점임.
Technical Solution
- getDataRange().getValues()를 통한 전체 데이터의 단일 API 호출 및 2D Array 메모리 로드
- JavaScript Set 객체를 활용한 Row-level Fingerprinting 기반의 중복 검사 로직 구현
- 구분자('|')를 이용한 컬럼 데이터 결합으로 고유 키를 생성하여 메모리 내 중복 필터링 수행
- clearContents()와 setValues()의 조합을 통해 처리된 결과물을 단 한 번의 쓰기 작업으로 반영
- 특정 컬럼 기반의 uniqueness 정의를 위해 Key 생성 로직을 분리한 유연한 필터링 구조 설계
- Trigger 및 onOpen 이벤트를 활용한 스케줄링 및 UI 통합 자동화 환경 구축
실천 포인트
1. 대량 데이터 수정 시 '개별 삭제' 대신 '전체 읽기 -> 메모리 가공 -> 전체 쓰기' 전략 검토
2. 데이터 결합 키 생성 시 실제 데이터에 포함될 가능성이 낮은 고유 구분자(Sentinel) 선정
3. 실행 환경의 Runtime Quota(예: Apps Script 6분 제한)를 고려한 알고리즘 시간 복잡도 설계
4. 데이터 정합성을 위해 쓰기 작업 전 유효성 검사(Guard Clause) 및 Null 체크 로직 포함