구글 스프레드시트의 IMPORTXML은 웹페이지나 XML 문서에서 XPath와
일치하는 데이터를 가져오는 함수입니다.
수식이 정상적으로 작동하다가 갑자기 데이터를 가져오지 못하거나
#N/A, 콘텐츠 없음, URL 가져오기 실패 또는 요청이 많다는 오류가
표시될 수 있습니다.
이러한 오류는 모두 같은 원인으로 발생하지 않습니다. URL에 접근하지 못하는 문제, XPath와 일치하는 항목이 없는 문제, 외부 데이터 접근이 승인되지 않은 문제와 가져오기 함수의 요청량 제한을 구분해야 합니다.
IMPORTXML은 브라우저 화면에서 원하는 부분을 자동으로 찾아주는 함수가 아닙니다. Google Sheets가 URL에서 받은 구조화된 데이터에 사용자가 작성한 XPath를 적용해 일치하는 노드나 속성을 반환합니다.
이 글은 Google의 IMPORTXML, 가져오기 함수 사용량·접근 승인·갱신 규칙과 IMPORTHTML·IMPORTDATA·IMPORTFEED·IMPORTRANGE 공식 문서를 기준으로 작성했습니다. 예제의 URL과 XPath는 실제 원본 데이터 구조에 맞게 변경해야 합니다.
![]() |
| IMPORTXML 오류는 URL 접근 문제, 일치하는 노드가 없는 XPath, 외부 데이터 접근 승인과 요청량 제한으로 나눠 확인해야 합니다. 위 이미지는 IMPORTXML의 데이터 조회 구조를 설명하기 위한 대표 개념 이미지입니다. |
먼저 오류 문구로 확인할 위치를 구분합니다
| 표시되는 상태 | 먼저 확인할 항목 | 수정 방향 |
|---|---|---|
| 수식 분석 오류 | 따옴표, 괄호, 함수 인수 | URL과 XPath 문자열 문법을 수정 |
| 가져온 콘텐츠가 비어 있음 | 현재 원본 구조와 XPath 일치 여부 | 단순 XPath부터 다시 확인 |
| URL을 가져올 수 없음 | URL, 원본 응답과 접근 가능 여부 | 프로토콜·주소·원본 제공 방식을 확인 |
| 액세스 허용 배너 | 외부 URL 접근 승인 | 편집 권한이 있는 사용자가 승인 |
| 관리자가 가져오기를 허용하지 않음 | Google Workspace 관리자 정책 | 조직 관리자에게 허용 여부 문의 |
| 결과가 너무 큼 | XPath가 반환하는 노드 수 | 조건을 추가해 반환 범위를 축소 |
| 요청 수가 많아 로드가 지연됨 | 문서 전체의 가져오기 함수 수와 변경 빈도 | 중복 수식을 줄이고 가져온 결과를 재사용 |
IMPORTXML의 기본 구문
IMPORTXML의 기본 형식은 다음과 같습니다.
=IMPORTXML(URL, XPath)
선택적인 로캘 인수를 포함하면 다음과 같은 구조입니다.
=IMPORTXML(URL, XPath, 로캘)
각 인수의 역할은 다음과 같습니다.
- URL: 데이터를 가져올 웹페이지나 구조화된 데이터 주소
- XPath: 가져올 요소 또는 속성의 위치를 선택하는 검색식
- 로캘: 데이터를 해석할 언어·지역 코드로 필요할 때만 지정
URL에는 프로토콜을 포함해야 합니다.
https://example.com/page
다음처럼 프로토콜이 없는 주소는 완전한 URL이 아닙니다.
example.com/page
URL과 XPath를 셀에 분리해 입력합니다
긴 URL과 XPath를 수식 안에 한꺼번에 작성하면 따옴표나 괄호 오류가 발생했을 때 원인을 구분하기 어렵습니다.
다음과 같이 입력값을 분리할 수 있습니다.
A2: 원본 URLB2: XPathC2: IMPORTXML 결과
A2에는 다음처럼 완전한 URL을 입력합니다.
https://example.com/page
B2에는 가져올 항목을 선택하는 XPath를 입력합니다.
//title
C2에는 다음 수식을 입력합니다.
=IMPORTXML(A2,B2)
URL이나 XPath를 바꿀 때 수식 전체를 다시 작성하지 않아도 되며, 어느 입력값에서 문제가 생겼는지 확인하기 쉽습니다.
가장 단순한 XPath부터 확인합니다
복잡한 XPath를 처음부터 입력하지 말고 원본에서 넓은 범위를 선택하는 XPath부터 확인합니다.
페이지 제목 가져오기
=IMPORTXML(A2,"//title")
이 수식은 원본 구조에 title 요소가 있을 때 해당 내용을
반환합니다.
모든 제목 요소 가져오기
=IMPORTXML(A2,"//h2")
원본에 여러 개의 h2 요소가 있다면 결과가 여러 셀로 펼쳐질 수
있습니다.
링크 주소 가져오기
=IMPORTXML(A2,"//a/@href")
//a는 링크 요소를 선택하고 /@href는 그 요소의 href
속성값을 반환합니다.
페이지 설명 메타 태그 가져오기
=IMPORTXML(
A2,
"//meta[@name='description']/@content"
)
원본에 name="description"인 meta 요소가 있다면 content 속성을
가져옵니다.
원본에 해당 요소나 속성이 없으면 결과를 가져올 수 없습니다.
같은 정보라도 사이트마다 HTML 구조와 속성 이름이 다릅니다.
원본 구조가 변경되면 기존 XPath도 더 이상 일치하지 않을 수 있습니다.
수식 문자열 안의 따옴표를 구분합니다
Google Sheets 수식에서는 URL과 XPath를 큰따옴표로 감쌉니다.
XPath 안에서 HTML 속성값을 비교해야 한다면 작은따옴표를 사용하면 문자열 구분이 명확해집니다.
올바른 형태:
=IMPORTXML(
A2,
"//div[@class='price']"
)
다음처럼 XPath 안팎에 같은 큰따옴표를 그대로 사용하면 수식 문자열이 중간에서 끝날 수 있습니다.
=IMPORTXML(
A2,
"//div[@class="price"]"
)
이러한 형태는 URL 접근 여부와 관계없이 수식 분석 단계에서 오류가 발생할 수 있습니다.
class에 여러 값이 있으면 완전 일치 여부를 확인합니다
원본 요소가 다음처럼 여러 class 값을 가지고 있다고 가정합니다.
<div class="product price featured">
15,000원
</div>
다음 XPath는 class 전체가 정확히 price인 요소를 찾습니다.
//div[@class='price']
실제 class 전체가 product price featured이므로 이 XPath와
일치하지 않습니다.
class 문자열에 price가 포함됐는지 확인하려면 다음과 같이 작성할 수 있습니다.
=IMPORTXML(
A2,
"//div[contains(@class,'price')]"
)
다만 price-old처럼 같은 문자열을 포함한 다른 class도 함께
선택될 수 있으므로 반환 결과를 확인해야 합니다.
브라우저에서 복사한 긴 XPath를 그대로 고정하지 않습니다
개발자 도구에서 복사한 XPath는 다음과 같이 페이지의 전체 위치를 포함할 수 있습니다.
/html/body/div[2]/main/div[3]/section/div[1]/span
중간에 광고 영역이나 새로운 div 요소가 추가되면 위치 번호가 바뀌어 기존 경로가 더 이상 일치하지 않을 수 있습니다.
고유한 id나 의미 있는 class가 있다면 필요한 조건만 사용하는 구조를 검토합니다.
//section[@id='product-info']//span[contains(@class,'price')]
짧은 XPath가 항상 더 정확한 것은 아닙니다. 여러 요소가 같은 조건과 일치한다면 추가 속성이나 상위 영역 조건으로 범위를 좁혀야 합니다.
가져온 콘텐츠가 비어 있을 때 확인하는 방법
수식 문법은 맞지만 가져온 콘텐츠가 비어 있다는 상태가 표시된다면 현재 XPath와 일치하는 항목을 찾지 못했을 가능성을 먼저 확인합니다.
다음 순서로 XPath를 단순화합니다.
=IMPORTXML(A2,"//title")처럼 단순한 항목을 먼저 확인합니다.
속성 조건을 제거하고
//h2, //a,
//div처럼 요소가 반환되는지 확인합니다.
class, id, name 또는 href의 실제 값이 코드와 일치하는지 확인합니다.
요소 안의 글자를 가져올지, href·src·content 같은 속성을 가져올지 구분합니다.
브라우저 화면에는 값이 보이지만 Google Sheets가 URL에서 받은 구조화된 데이터에는 해당 값이 없을 수도 있습니다.
특히 브라우저가 페이지를 연 뒤 별도 처리를 통해 값을 생성하거나, 로그인 상태·쿠키·세션·사용자별 인증이 필요한 데이터는 단순한 URL과 XPath만 받는 IMPORTXML 구조에 적합하지 않을 수 있습니다.
이런 경우 XPath를 계속 변경하는 것만으로 해결된다고 단정하지 말고 원본이 공개 XML·HTML·CSV·RSS 또는 공식 API를 제공하는지 확인해야 합니다.
URL을 가져올 수 없을 때 확인할 항목
URL 가져오기 단계에서 실패한다면 다음 항목을 확인합니다.
- URL 앞에
https://또는http://가 있는지 - 셀에 표시된 링크가 아니라 실제 URL 문자열이 들어 있는지
- 주소 앞뒤에 공백이나 줄바꿈이 포함되지 않았는지
- 주소가 로그인 후에만 열리는 페이지인지
- 일시적으로 삭제되거나 이동된 페이지인지
- 원본 서버가 외부 요청에 응답하는 구조인지
- Google Workspace 관리자가 해당 URL의 가져오기를 제한했는지
브라우저에서 페이지가 열린다는 사실만으로 Google Sheets의 외부 요청도 같은 방식으로 처리된다고 단정할 수 없습니다. 브라우저에 저장된 로그인 정보나 사용자 세션이 필요한 페이지라면 별도의 인증 방식을 제공하는 공식 API가 필요한지 확인해야 합니다.
처음 사용하는 시트에서는 외부 데이터 액세스를 허용합니다
IMPORTXML, IMPORTHTML, IMPORTFEED, IMPORTDATA 같은 함수가 처음 추가되거나 수정되면 시트가 외부 서비스와 데이터를 주고받을 수 있다는 경고 배너가 표시될 수 있습니다.
편집 권한이 있는 사용자가 액세스 허용을 선택하기 전까지 해당 시트의 가져오기 함수가 차단될 수 있습니다.
모바일 화면에서 외부 URL 접근 허용이 필요하다는 오류가 나타난다면 데스크톱 웹브라우저에서 스프레드시트를 열어 승인합니다.
조직 계정에서 관리자가 특정 URL의 가져오기를 허용하지 않았다는 메시지가 표시된다면 수식을 바꾸는 문제가 아닙니다. Google Workspace 관리자에게 허용 정책을 문의해야 합니다.
결과가 너무 크면 XPath가 가져오는 범위를 줄입니다
다음 수식은 페이지의 모든 링크 주소를 반환하므로 원본에 링크가 많으면 결과가 커질 수 있습니다.
=IMPORTXML(A2,"//a/@href")
필요한 링크에 공통 경로가 있다면 조건을 추가해 범위를 줄일 수 있습니다.
=IMPORTXML(
A2,
"//a[contains(@href,'/products/')]/@href"
)
결과를 가져온 뒤 ARRAY_CONSTRAIN이나 다른 함수로 일부만
표시하는 방식보다, 가능하면 XPath 단계에서 불필요한 노드를 제외하는 편이
가져오는 데이터의 범위를 직접 줄입니다.
같은 URL을 여러 셀에서 반복 호출하지 않습니다
다음과 같이 같은 원본에 대해 IMPORTXML을 여러 번 실행할 수 있습니다.
=IMPORTXML(A2,"//h1")
=IMPORTXML(A2,"//h2")
=IMPORTXML(A2,"//a/@href")
=IMPORTXML(A2,"//meta/@content")
각 수식은 별도의 가져오기 작업을 발생시킬 수 있습니다. 여러 행에 같은 수식을 복제하면 요청량과 계산 부담이 더 커질 수 있습니다.
다음 방식으로 구조를 정리합니다.
- 같은 결과는 한 번만 가져와 다른 셀에서 참조
- 필요한 데이터만 반환하도록 XPath 범위 축소
- 여러 문서에 흩어진 동일 가져오기 수식 통합
- 변경되지 않는 과거 결과는 값으로 보관할지 검토
- 표나 목록 전체가 목적이라면 IMPORTHTML 사용 검토
- RSS 또는 Atom 피드는 IMPORTFEED 사용 검토
브라우저 새로고침으로 강제 갱신되지 않습니다
IMPORTDATA, IMPORTHTML과 IMPORTXML은 문서가 열려 있는 동안 주기적으로 업데이트를 확인합니다.
하지만 브라우저에서 문서를 새로 고치는 동작만으로 IMPORTXML의 외부 데이터 새로고침이 발생하는 것은 아닙니다.
셀을 삭제했다가 다시 입력하거나 같은 수식으로 덮어쓰면 새 요청이 발생할 수 있지만, 이를 짧은 시간마다 반복하면 사용량 제한에 불리할 수 있습니다.
데이터가 반드시 특정 시각에 갱신돼야 한다면 IMPORTXML의 주기적 확인에 의존하는 방식이 업무 요구사항에 맞는지 먼저 판단해야 합니다.
휘발성 함수로 URL을 계속 바꾸지 않습니다
가져오기 함수는 NOW(), RAND(),
RANDARRAY(), RANDBETWEEN()을 포함한 셀을 직접 또는
간접으로 참조할 수 없습니다.
다음과 같이 URL에 현재 시각을 붙이는 구조는 적절하지 않습니다.
=IMPORTXML(
A2&"?time="&NOW(),
B2
)
원본 URL이 계속 달라지면 외부 요청도 반복될 수 있습니다. 데이터 갱신을 강제로 유도하려고 임의 매개변수를 계속 변경하지 않습니다.
오류 확인 중에는 IFERROR를 제거합니다
다음 수식은 모든 오류를 동일한 빈칸으로 바꿉니다.
=IFERROR(
IMPORTXML(A2,B2),
""
)
URL 접근 실패, XPath 불일치, 액세스 승인과 요청량 제한이 모두 빈칸으로 표시되므로 원인을 알기 어렵습니다.
수식을 만드는 동안에는 IFERROR를 제거해 실제 오류 메시지를 확인합니다. URL과 XPath가 정상적으로 작동하는 것을 확인한 뒤 사용자용 화면에서만 안내 문구를 추가할 수 있습니다.
=IF(
OR(A2="",B2=""),
"",
IFERROR(
IMPORTXML(A2,B2),
"URL, XPath 또는 외부 데이터 접근 상태를 확인하세요."
)
)
최종 안내 문구도 실제 원인을 대신하지 않습니다. 관리용 영역에서는 원래 오류 메시지를 확인할 수 있는 수식을 유지하는 편이 적절합니다.
데이터 형태에 맞는 가져오기 함수를 선택합니다
XPath가 필요하지 않은 구조에 IMPORTXML을 사용하면 수식이 불필요하게 복잡해질 수 있습니다.
| 원본 데이터 | 우선 검토할 함수 | 사용 목적 |
|---|---|---|
| HTML의 표 또는 목록 |
IMPORTHTML
|
table·list 구조 전체 가져오기 |
| CSV 또는 TSV 파일 |
IMPORTDATA
|
구분된 텍스트 데이터 가져오기 |
| RSS 또는 Atom 피드 |
IMPORTFEED
|
피드 제목·URL·게시일 가져오기 |
| 다른 Google 스프레드시트 |
IMPORTRANGE
|
다른 파일의 셀 범위 가져오기 |
| XML·HTML의 특정 요소나 속성 |
IMPORTXML
|
XPath로 필요한 위치 선택 |
IMPORTHTML이 더 단순한 경우
웹페이지에 일반적인 HTML 표가 있고 표 전체가 필요하다면
IMPORTHTML을 먼저 검토합니다.
=IMPORTHTML(
A2,
"table",
1
)
세 번째 인수의 1은 HTML 소스에 정의된 첫 번째 표를 뜻합니다. 원하는 표가 두 번째라면 2로 변경합니다.
특정 표 안의 일부 요소나 속성만 선택해야 한다면 IMPORTXML과 XPath가 더 적합할 수 있습니다.
RSS나 Atom은 IMPORTFEED를 검토합니다
원본이 RSS 또는 Atom 피드라면 XPath를 직접 구성하지 않고
IMPORTFEED로 항목 제목과 URL 등을 가져올 수 있습니다.
=IMPORTFEED(
A2,
"items title",
FALSE,
10
)
위 구조는 피드에서 최근 항목 제목을 최대 10개 요청하는 형식입니다. 실제 피드가 제공하는 항목과 접근 상태에 따라 결과는 달라집니다.
작동하던 XPath가 갑자기 멈췄을 때
이전에 정상적으로 데이터를 가져오던 수식이 멈췄다면 수식 자체를 무조건 다시 작성하기 전에 다음 변경 가능성을 확인합니다.
- 원본 URL 또는 페이지 경로 변경
- 요소의 id·class·name 변경
- HTML 구조와 요소 순서 변경
- 공개 페이지가 로그인 방식으로 변경
- 원본이 표·XML·RSS 또는 API 주소를 새로 제공함
- 가져오기 함수 요청량 제한 발생
- 조직 관리자의 외부 가져오기 정책 변경
원본 구조가 바뀐 상황에서 동일한 XPath를 반복 입력하거나 수식을 새로고침하는 것만으로는 새로운 데이터 위치를 찾을 수 없습니다.
최종 점검 순서
프로토콜, 공백, 경로와 로그인 필요 여부를 확인합니다.
//title, //h2 또는 //a/@href처럼
단순한 조건부터 확인합니다.
수식 바깥은 큰따옴표, XPath의 속성값 비교에는 작은따옴표를 사용할 수 있습니다.
편집 권한이 있는 사용자가 액세스를 허용했는지 확인합니다.
XPath가 일치하지 않는 문제인지, 원본 자체를 가져오지 못한 문제인지 구분합니다.
결과가 너무 크면 XPath에 요소·속성·경로 조건을 추가합니다.
같은 URL의 동일 데이터를 한 번만 가져오고 결과 셀을 재사용합니다.
표는 IMPORTHTML, CSV·TSV는 IMPORTDATA, 피드는 IMPORTFEED, 다른 스프레드시트는 IMPORTRANGE를 검토합니다.
내용 확인에 사용한 Google 공식 자료
공식 문서 확인일: 2026년 7월 29일

댓글 쓰기