구글시트 Apps Script 자동화에 대해 실무에서 자주 겪는 문제와 해결 방법을 정리했습니다. 2026년 현재, 구글시트로 관리 대장을 만들다 보면
다음과 같은 요구가 생긴다.
- 기업명을 클릭하면 상세 페이지로 이동
- 동시에 해당 기업의 ID를 특정 셀에 자동 입력
- 대시보드가 자동으로 업데이트
하지만 기본 HYPERLINK() 함수는
“이동”만 가능하고 “값 전달”은 불가능하다.
이 글에서는 단순 코드 소개가 아니라
왜 하이퍼링크만으로는 안 되는지 → 왜 트리거가 필요한지 → 실무에서 가장 안정적인 패턴은 무엇인지까지 정리한다.
핵심 정리: ① HYPERLINK 함수는 이동만 가능하며 값 전달 및 상태 변경은 불가하다. ② Apps Script의 onSelectionChange 트리거로 이벤트 기반 자동화를 구현하여 값 전달 및 시트 이동을 자동화한다. ③ 대용량 시트의 타임아웃 문제를 해결하기 위해 설치 가능 트리거 사용과 이벤트 객체(e)의 올바른 이해가 필수이다.
자주 묻는 질문
Q. Apps Script를 배우려면 코딩을 알아야 하나요?
기본적인 JavaScript 문법만 알면 됩니다. 또는 AI에게 코드를 작성해 달라고 요청해도 됩니다.
Q. Apps Script는 무료인가요?
네, Google Workspace 사용자라면 무료로 사용할 수 있습니다.
왜 HYPERLINK 함수만으로는 불가능한가?
HYPERLINK 함수의 역할은 단순하다.
HYPERLINK 함수는 구글시트에서 특정 URL이나 시트 내 위치로 이동하는 기능을 담당하는 함수이다.
=HYPERLINK("#gid=123456789","기업명")
이 함수는:
- 특정 시트로 이동 ⭕
- 셀 값 변경 ❌
- 다른 시트에 값 입력 ❌
즉, 상태를 변경하는 기능은 없다.
값을 전달하려면
“사용자의 선택 변경을 감지”해야 한다.
이때 필요한 것이 Apps Script + 트리거다.
자동화의 핵심 구조 이해하기
전체 동작 흐름은 다음과 같다.
Apps Script를 활용한 구글시트 자동화는 사용자 이벤트에 반응하여 특정 동작을 수행하는 이벤트 기반 설계 구조이다.
사용자 셀 클릭
↓
onSelectionChange 트리거 실행
↓
선택된 행의 ID 추출
↓
대상 시트 B2에 값 입력
↓
대상 시트 활성화
즉, 단순 이동이 아니라
이벤트 기반 자동화(Event-driven automation) 구조다.
실무에서 가장 안정적인 Apps Script 패턴
기존 코드(파일 2~3페이지에 제시된 코드 구조 참고 )는
실무 Apps Script 패턴은 대용량 시트에서도 안정적으로 동작하도록 설계된 코드 구조와 설정 변수를 의미한다.
대용량 시트에서도 동작하도록 설계되어 있다.
핵심은 다음 5가지 설정 변수다.
const sheetA = "원본시트명";
const sheetB = "값이 입력될 시트명";
const targetCellB = "B2";
const HYPERLINK_COLUMN = 96; // CR열
const COMPANY_ID_COLUMN = 1; // A열
여기서 가장 중요한 것은:
✔ 열 번호 정확성
✔ 특정 시트에서만 동작하도록 조건 제한
✔ 이벤트 객체(e) 존재 여부 체크
왜 이벤트 객체(e)가 중요한가?
오류 메시지:
Apps Script의 이벤트 객체(e)는 특정 트리거(예: 셀 선택 변경)가 발생했을 때 해당 이벤트에 대한 상세 정보를 담고 있는 객체이다.
TypeError: Cannot read properties of undefined (reading 'range')
이 오류는 코드 문제가 아니다.
원인은:
스크립트 편집기에서 ▶ 버튼을 눌러 실행했기 때문
이 함수는 e라는 이벤트 객체를 필요로 한다.
즉,
- 직접 실행 ❌
- 시트에서 셀 클릭 ⭕
이 차이를 이해하지 못하면 계속 같은 오류를 겪는다.
대용량 시트에서 발생하는 타임아웃 문제
파일 3페이지에서 언급된 것처럼
대용량 구글시트에서 Apps Script가 과도한 작업을 수행할 때 스크립트 실행 시간이 제한(단순 트리거 30초)을 초과하여 발생하는 오류이다.
단순 트리거는 30초 제한이 있다.
증상:
- “시간이 초과되었습니다”
원인:
- 대량 데이터 접근
- 불필요한 전체 시트 탐색
해결:
👉 설치 가능 트리거로 변경
실행 시간 6분으로 증가.
실무 시나리오 1 – 기업 관리 대장
기업 관리 대장 시나리오는 구글시트에서 기업명을 클릭하여 상세 시트로 이동하고, 관련 기업 ID를 자동으로 입력하여 대시보드를 필터링하는 자동화 예시이다.


기업명을 클릭하면:
- 상세 시트로 이동
- B2에 기업ID 자동 입력
- QUERY 기반 대시보드 자동 필터링
이 패턴은
CRM, 영업 관리, 채용 대장에 매우 유용하다.
실무 시나리오 2 – KPI 대시보드 연동
목표:
KPI 대시보드 연동 시나리오는 리스트 항목 클릭 시 관련 ID를 전달하여 BigQuery 연동 데이터 및 시각화를 자동으로 갱신하는 자동화 예시이다.
- 리스트에서 항목 클릭
- 상세 리포트 자동 갱신
패턴:
- 클릭
- ID 전달
- BigQuery 연동 QUERY 실행
- 시각화 자동 변경
이 구조는
Looker Studio와도 연동 가능하다.
자주 발생하는 실수 정리
| 오류 | 원인 | 해결 |
| 값이 안 찍힘 | 열 번호 오류 | CR=96 확인 |
| 실행 오류 | e 객체 없음 | 직접 실행 금지 |
| 시간 초과 | 단순 트리거 사용 | 설치 트리거 사용 |
| 다른 열 클릭 시 실행 | 조건 누락 | 열 체크 조건 추가 |
성능 최적화 팁
✔ 특정 열 클릭 시만 실행
✔ 전체 범위 탐색 금지
✔ 불필요한 Logger 제거
✔ ID 열은 숫자 유지
확장 가능성
이 패턴은 단순 ID 전달을 넘어 다음으로 확장 가능하다.
Apps Script를 활용한 구글시트 자동화는 단순한 값 전달을 넘어 워크플로 자동화, 상태 변경, 로그 기록 등 다양한 기능으로 발전할 수 있다.
- 상태 자동 변경
- 로그 기록
- 클릭 횟수 카운트
- 승인/반려 버튼 구현
- 워크플로 자동화
즉,
Google Sheets를 간이 웹앱처럼 사용하는 구조로 발전 가능하다.
📌 최종 체크리스트
✔ HYPERLINK 열 번호 정확한가
✔ ID 열 번호 정확한가
✔ 설치 가능 트리거 설정했는가
✔ 이벤트 객체 직접 실행하지 않았는가
✔ 대용량 시트 최적화했는가
마무리
구글시트 자동화의 핵심은
단순 함수 조합이 아니라
이벤트 기반 설계 구조를 이해하는 것이다.
HYPERLINK는 이동만 담당하고,
Apps Script는 상태 변경을 담당한다.
이 두 가지를 결합하면
클릭 한 번으로 실무 자동화 흐름을 만들 수 있다.
이 블로그에서는
Google Sheets, BigQuery, Looker Studio를 연결하는
실전 자동화 패턴을 구조적으로 정리하고 있다.
💬 이 글이 도움이 되셨다면
구글시트 Apps Script 자동화 관련 궁금한 점이나 더 알고 싶은 내용이 있다면 댓글로 남겨주세요! 실무에서 겪은 경험을 공유해 주셔도 좋습니다.
'업무 데이터 자동화' 카테고리의 다른 글
| 구글시트 조건부 고유 항목 카운팅 방법 (COUNTUNIQUE + FILTER 조합의 내부 동작과 실무 안정 패턴) (0) | 2026.02.23 |
|---|---|
| 구글시트 빈 셀 개수 세기 총정리 (COUNTBLANK · COUNTIF 차이와 실무에서 헷갈리는 케이스 완전 정리) (0) | 2026.02.20 |
| 구글시트 → BigQuery → Looker Studio 연결 시 자주 막히는 문제 정리 (데이터타입, 권한, 타임존 문제 완전 가이드) (0) | 2026.02.13 |
| BigQuery 날짜 변환 함수 정리 (DATE·DATETIME·TIMESTAMP 변환 패턴) (0) | 2026.02.11 |
| 엑셀에서 날짜 정렬이 안 될 때 원인과 해결 방법 (TEXT 날짜 문제) (0) | 2026.02.09 |
