구글 앱스크립트로 업무 자동화하기 — 완전 가이드
구글 앱스크립트(GAS)로 주문·예약·재고·정산·현장 입력 같은 반복 업무를 자동화하는 법. 무엇이 되고, 어디까지 0원이고, 언제 한계에 부딪히는지 한 곳에 정리한 길잡이.
15 개의 글
구글 앱스크립트(GAS)로 주문·예약·재고·정산·현장 입력 같은 반복 업무를 자동화하는 법. 무엇이 되고, 어디까지 0원이고, 언제 한계에 부딪히는지 한 곳에 정리한 길잡이.
체크리포트 데모를 만들며 실제로 헤맨 지점과 코드. 공유 시트 동시 저장은 ScriptLock + 멱등 키로 막고, 셀에는 메타데이터만, 내보내기는 시간 예산으로 끊는다. 좋은 코드와 나쁜 코드를 함께 본다.
혼자 쓰는 앱은 화면만 있으면 된다. 여러 점검자가 같은 데이터를 쓰는 점검 앱은 공유, 충돌, 보고서가 핵심이다. 그래도 범위를 좁히면 GAS·시트·드라이브로 유지비 없이 시작할 수 있다. 직접 써볼 수 있는 공개 데모도 있다.
GAS에서 느린 건 자바스크립트가 아니라 Sheets·Drive 같은 서비스 호출이다. 루프 안 getValue/setValue를 일괄 getValues/setValues로 바꾸면 수십 배 빨라진다.
구글 시트 셀은 5만 자에서 막힌다. 사진·서명을 data URL로 기록 행에 넣으면 저장이 깨진다. 셀에는 메타데이터만 남겨라.
‘누구로 실행’ × ‘누가 접근’ 조합이 데이터 권한과 코드 공개 여부를 결정한다. 공개 앱은 앱 레벨 인증을 따로 설계해야 한다.
Apps Script는 한 번 실행이 6분에서 강제 종료된다. 대량 작업은 청크 + 커서 + 시간 트리거 재개로 설계해야 절반만 처리되는 사고를 막는다.
Properties 값은 한 개당 약 9KB가 한계다. 캐시는 유실돼도 되는 데이터에만. 큰 상태는 Sheet·Drive·외부 DB로. JSON 직렬화는 타입을 잃는다.
SVG foreignObject로 DOM을 캡처하면 모바일 Safari·GAS iframe에서 멈추거나 빈 이미지가 나온다. 직접 캔버스에 그리고, 다운로드는 Web Share로 받아라.
여러 사용자·트리거가 같은 자산을 쓰면 번호가 겹치고 행이 덮인다. tryLock + finally + flush로 막고, 동시 실행 30/user 천장을 설계에 넣어라.
clasp으로 새 버전을 올릴 때 deployment ID를 재사용하면 /exec URL이 고정된다. 공유 시트 쓰기는 LockService로 막는다.
429·503·타임아웃 같은 일시적 실패는 재시도로 살릴 수 있다. 단 멱등성 없는 쓰기는 멱등키 없이 재시도하지 마라. 6분 안에서 멈춰라.
템플릿에서 긴 데이터 로드를 하면 첫 화면이 늦는다. 껍데기를 먼저 그리고 google.script.run으로 비동기 로드하되, 모든 호출에 실패 핸들러를 붙여라.
GAS는 짧은 자동화에 강하고 장시간·대량·다수 동시에 약하다. 할당량은 계정 단위로 공유된다. 한계 신호를 미리 알고 이전 계획을 세워라.
분류·요약·초안은 Vertex AI(Gemini)를 GAS에서 직접 호출해 더한다. 6분을 넘는 무거운 일은 Cloud Run으로 넘긴다. 단 사람 승인 게이트는 필수.