구글 앱스 or 구글 드라이브를 사용한지가 벌써 몇년인데…
이런 기능이 있을 줄은 상상도 못했다.

구글 스프레드시트(엑셀)에 설문조사 항목을 정리해 이를 구글 폼으로 일괄 변경하는 방법을 찾는 중이었다.
일단 결론은 실패.

하지만 관련 내용을 조사하던 중 구글 스프레드시트에 MS 오피스 엑셀에선 보지 못한 함수를 알게되었다.
그 함수들은 각각 import로 시작하는 아래의 함수들.

 

이들은 공통적으로 시트 외부 즉 인터넷에 있는 각종 정보를 시트내로 끌어올 수 있는 함수로 목적에 따라 대단히 유용하게 활용할 수 있다.

특히 이중 importhtml 및 importxml은 웹에 있는 정보를 끌어오는데 상당한 편리성을 자랑한다.

예를들어 importhtml 함수를 이용하면 웹상에 표로 표현되어 있는 정보를 끌어다 바로 스프레드시트에 삽입할 수 있다.
당장에 구글 스프레드시트에서 아래의 코드를 복사해 셀에 붙어넣은 후 엔터함 쳐보시라.

=importhtml(“http://score.sports.media.daum.net/record/soccer/kl/prnk.daum”, “table”, 1)

그 결과는 아래와 같다.

다음 스포츠 K리그 클래식 2014년 선수 순위 데이터를 importhtml 함수로 불러온 결과
다음 스포츠 K리그 클래식 2014년 선수 순위 데이터를 importhtml 함수로 불러온 결과

삽입된 데이터의 원본 데이터는 아래와 같다.

원본 데이터는 html의 table 즉 표로 작성된 데이터다.
원본 데이터는 html의 table 즉 표로 작성된 데이터다.

구글 스프레드시트의 importhtml 함수는 위와 같이

  • 데이터가 들어 있는 웹페이지 URL
  • 데이터 형태(table or list)
  • 순서(해당 페이지 내에 몇번째 놈을 가져올 것인가의 index)

정보만 입력해주면 이를 그대로 시트에 옮겨준다.

또한 바로 위에서 언급한 바와 같이 표 즉 table 태그뿐만 아니라 ul, ol 등의 리스트 요소도 끌어올 수 있다.

importhtml로 끌어온 데이터를 기반으로한 차트생성도 가능
importhtml로 끌어온 데이터를 기반으로한 차트생성도 가능

어디 그 뿐인가.
위의 스샷 처럼 웹에서 가져온 데이터로 차트 생성도 가능하다.

한가지 아쉬운건 원본데이터가 실시간으로 변경될 경우 이를 반영하는 속도가 실시간은 아니라는 점.
찾아보니 꽁수를 써서 분단위 갱신은 가능한 것으로 보이지만 실제 동작확인은 하지 못했다.

웹밥을 먹고 있는 개발자 입장에서 이와 같은 데이터 파싱이 크게 어려운 것은 아니다.
하지만 일반적인 사용자 입장에서 어디 그러하겠는가?
그런 점 때문에 이 기능은 상당한 놀라움으로 다가 왔다.

만약 이 글을 보시는 분이 xml에 관한 지식이 있다면 importxml 함수도 함 사용해보시라.
importxml은 함수명과는 달리 xml 뿐만아니라 html, csv, tsv, rss, atom 등 왠만큼 구조화된 데이터는 모두 끌어올 수 있는 함수다.

인자는 importhtml과 마찬가지로 끌어올 데이터가 들가 있는 URL과 xpath쿼리값이다.
실제 이걸 잘만 활용하면 여러 사이트에서 개별적으로 업데이트 되는 정보를 하나의 시트안에서 모두 확인할 수도 있다.

마지막으로 구글 스프레드시트 자체 함수는 아니지만 관련 API 함수로 Query라는 놈이 있다.
이 함수는 간단한 SQL 구문을 지원하는 함수로 위의 함수와 함께 사용하면 더욱 강력해진다.

확인해보니 구글 드라이브와 비슷한 네이버 오피스 셀에는 아직 이와 같은 기능은 없는 듯.
뭐 각기 장단점은 있으니 필요에 따라서 사용하심 되겠다.

이 글의 관련글

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *