피드로 돌아가기
Remove duplicate rows in Google Sheets
Dev.toDev.to
Backend

API Call 최적화로 1만 행 중복 제거 시간을 6분에서 2초로 단축

Remove duplicate rows in Google Sheets

bulldo.gs2026년 6월 13일5intermediate

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 체크 로직 포함

원문 읽기