피드로 돌아가기
Fix "Exceeded maximum execution time" in Apps Script
Dev.toDev.to
Backend

Checkpoint-resume 패턴 도입으로 Apps Script 6분 실행 제한 극복

Fix "Exceeded maximum execution time" in Apps Script

bulldo.gs2026년 6월 13일5intermediate

Context

Google Apps Script의 실행 시간 제한(최대 6분)으로 인한 대규모 데이터 처리 중단 문제 발생. 개별 Row 단위 API 호출 방식의 높은 Overhead로 인해 데이터 볼륨 증가 시 처리 시간이 기하급수적으로 증가하는 구조적 한계 노출.

Technical Solution

  • PropertiesService 기반의 Cursor 저장 구조 설계를 통한 상태 유지 및 중단 지점 복구 구현
  • 5분(SAFE_MS)의 여유 시간을 둔 Time-out 체크 로직을 삽입하여 데이터 오염 방지 및 안전한 Checkpoint 저장 보장
  • Time-driven Trigger를 활용한 1분 주기 자동 재실행 파이프라인 구축으로 단일 실행 제약을 비동기적 연속 실행 구조로 전환
  • 개별 getValue() 호출을 getValues() 2D Array 일괄 읽기 방식으로 변경하여 API Round-trip Overhead 최소화
  • 작업 완료 후 Trigger 및 Cursor를 제거하는 Cleanup 프로세스를 통해 불필요한 리소스 낭비와 쿼터 소모 방지

Impact

  • 2,000개 Row 처리 시 실행 시간을 3~4분에서 10초 미만으로 단축
  • API 호출 방식 최적화를 통해 수천 개의 Row 처리 시 발생하는 6분 시간 제한 문제를 완전히 제거

1. 루프 내 API 호출 여부 확인 및 Batch Read(getValues) 적용 검토

2. 실행 시간 제한이 있는 환경에서 상태 저장소(Cursor)를 활용한 Checkpoint-resume 패턴 적용

3. Hard-limit 도달 전 안전한 종료를 위한 Buffer Time(예: 60초) 설정

4. 자동화 작업 완료 후 Trigger 및 상태 정보 삭제 로직 포함 여부 확인

원문 읽기