구글 시트에서 IMPORTRANGE 함수를 자주 사용하고 있는데 그만큼 오류를 만날 가능성도 높다고 생각한다.
대부분이 자동 업데이트를 위해서 수시로 데이터를 확인하기 위해 해당 함수를 사용할텐데 이럴경우는 그 목적에 맞지 않게 데이터의 즉시성 측면에서 아쉬운 상황들이 많이 있다.
구글시트에서 여러 파일의 데이터를 하나로 모아야 할 때
가장 많이 사용하는 함수가 IMPORTRANGE다.
특히:
- 팀별 시트를 하나로 집계할 때
- 자동 보고서를 만들 때
- 대시보드에 외부 데이터를 연결할 때
거의 필수처럼 사용된다.
하지만 실무에서 사용하다 보면 다음과 같은 문제가 반복된다.
- 수식은 맞는데 값이 안 불러와짐
- #REF!, #ERROR! 발생
- 값은 있는데 공백으로 표시
- 날짜 조건이 먹지 않음
- 자동 업데이트가 즉시 되지 않음
이 글에서는 단순 오류 정리가 아니라,
왜 이런 문제가 발생하는지 → 어떻게 구조적으로 해결하는지를 정리한다.
1️⃣ IMPORTRANGE 함수의 동작 원리부터 이해하기

기본 구조:
=IMPORTRANGE("스프레드시트_URL", "시트명!범위")
예시 :
=IMPORTRANGE("https://docs.google.com/xxx","Sheet1!A:C")
🔎 내부 동작 방식
IMPORTRANGE는:
- 외부 스프레드시트에 연결 요청
- 권한 확인
- 지정 범위의 데이터를 배열 형태로 가져옴
- 현재 시트에 동적 배열로 출력
즉, 단순 복사가 아니라
외부 데이터와 연결된 상태로 유지되는 구조다.
그래서:
- 권한 문제가 자주 발생하고
- 대용량일 경우 지연이 생기며
- QUERY와 결합 시 타입 문제가 발생한다.
2️⃣ #REF! 오류 – 접근 권한 문제 (가장 흔함)

📌 증상
- 셀에 #REF!
- “연결 허용이 필요합니다” 문구
🔎 왜 발생하는가?
IMPORTRANGE는 처음 연결할 때
두 파일 간의 접근을 수동 승인해야 한다.
하지만 다음과 같은 구조일 경우 문제가 발생한다.
=QUERY(IMPORTRANGE(...), "select ...")
QUERY로 감싸면
권한 승인 버튼이 표시되지 않는 경우가 많다.
✅ 해결 방법 (안정적인 순서)
1️⃣ 먼저 단독 IMPORTRANGE 실행
=IMPORTRANGE("URL","Sheet1!A:C")
2️⃣ 셀 클릭 → “접근 허용” 클릭
3️⃣ 그 다음 QUERY 추가
🔧 실무 팁
- 새로운 파일을 연결할 때는 반드시 IMPORTRANGE 단독 실행 후 결합
- 팀 단위 자동 보고서 만들 때 이 순서 필수
3️⃣ QUERY와 함께 사용할 때 날짜 오류
📌 자주 발생하는 오류
=QUERY(
IMPORTRANGE("URL","Sheet1!A:C"),
"select Col1 where Col1 >= date '2025-01-01'"
)
결과: 값 0개 또는 조건 무시
🔎 원인
IMPORTRANGE로 가져온 날짜는:
- 실제 DATE 타입일 수도 있고
- TEXT로 인식될 수도 있다
QUERY는 내부적으로 SQL 형태로 조건을 해석한다.
DATE 타입이 아니면 조건 비교가 실패한다.
✅ 해결 방법 1: date()로 감싸기
where date(Col1) >= date '2025-01-01'
✅ 해결 방법 2: 원본 시트에서 DATE 통일
- 서식 → 날짜 형식 통일
- 문자열 날짜 제거
📌 실무 시나리오
월간 매출 집계 보고서에서
“이번 달 데이터만 가져오기” 조건이 작동하지 않을 때
대부분 TEXT 날짜 문제다.
4️⃣ 값은 있는데 공백으로 나오는 경우
🔎 원인
- 숨겨진 공백
- 보이지 않는 특수문자
- 조건 불일치
- 실제 값이 아니라 문자열
✅ 체크 방법
=TRIM(A2)
=ISTEXT(A2)
=ISDATE(A2)
=LEN(A2)
특히 외부 시트에서 복붙된 데이터는
눈에 보이지 않는 공백이 포함된 경우가 많다.
5️⃣ 자동 업데이트 지연 문제 (많이 놓치는 부분)
IMPORTRANGE는 즉시 반영이 되지 않을 수 있다.
🔎 이유
- Google 서버 캐싱
- 대용량 범위 호출
- 중첩 QUERY 사용
✅ 해결 전략
- 범위를 최소화 (A:A ❌ → A2:F5000 ⭕)
- 중첩 QUERY 줄이기
- 필요 시 Apps Script로 강제 갱신
6️⃣ 실무에서 가장 안정적인 패턴
=QUERY(
IMPORTRANGE("URL","Sheet1!A:F"),
"select * where Col1 is not null",
1
)
왜 이 패턴이 안정적인가?
- 헤더 지정
- NULL 필터링
- 범위 최소화
- 권한 승인 후 사용
7️⃣ 오류 유형 요약 표
| 오류 유형 | 원인 | 해결 |
| #REF! | 권한 미승인 | 단독 실행 후 승인 |
| 날짜 조건 무시 | TEXT 타입 | date() 적용 |
| 공백 표시 | 숨은 공백 | TRIM |
| 업데이트 지연 | 대용량 호출 | 범위 축소 |
📌 최종 체크리스트
✔ 먼저 단독 IMPORTRANGE 실행
✔ 접근 허용 클릭
✔ 날짜 타입 통일
✔ 범위 최소화
✔ QUERY 결합은 마지막 단계
마무리
IMPORTRANGE 오류의 대부분은
- 권한 문제
- 데이터 타입 문제
- QUERY 조건 문제
- 호출 범위 과다
이 네 가지로 정리된다.
실무에서는 함수를 많이 아는 것보다
데이터 구조를 이해하는 것이 더 중요하다.
앞으로도
구글시트, BigQuery, Looker Studio를 사용하면서
실제로 막혔던 문제들을 구조적으로 정리해볼 예정이다.
'업무 데이터 자동화' 카테고리의 다른 글
| BigQuery 날짜 타입 차이 정리 (DATE·DATETIME·TIMESTAMP 언제 쓰나?) (0) | 2026.02.04 |
|---|---|
| 구글시트 ARRAYFORMULA 사용 시 값이 안 나올 때 원인과 해결 방법 (0) | 2026.02.02 |
| 구글시트 날짜가 문자(TEXT)로 인식될 때 원인과 해결 방법 (0) | 2026.01.30 |
| 구글시트 QUERY 함수 기본 문법과 자주 발생하는 오류 정리 (0) | 2026.01.28 |
| 구글시트 QUERY 날짜 조건 오류 해결 방법 (TEXT → DATE 문제 정리) (0) | 2026.01.26 |
