구글 스프레드시트를 데이터베이스로 이용하기 - 2.Query 편
구글 스프레드시트를 데이터베이스로 이용하기 - 1. ajax POST를 통한 기록 편
구글 스프레드시트를 데이터베이스로 이용하기 - 1.1 방문로그 기록 편
지난 글들은 구글 스프레드시트들 데이터베이스로 이용하기 중 '입력'에 해당하는 내용이었습니다.
데이터베이스라면 '출력'도 가능해야 할 텐데요.
하지만 안타깝게도 아직은 완전한 방법은 발견하지 못했습니다.
구글 스프레드시트를 데이터베이스로 이용하기 - 2.1 ajax로 json데이터 받아오기편
현재(2014년10월28일) 시점을 기준으로 이 블로그의 최하단에는 카운터와 함께, 이 게시글의 조회수와 조회수 순위가 출력되고 있습니다.
그리고 잘 살펴보시면 아시겠지만, iframe으로 불러오기 때문에 스타일을 변경할 수 없는 치명적 단점이 있습니다.
ajax요청으로 불러오면 참 좋겠지만, access-control-allow-origin때문에 다른도메인의 자료를 쉽게 가져올 수 없습니다.
구글 스프레드 시트 쿼리(query) 방법
이 방법은 아래 문서에서 많은 참조를 했습니다.
http://acrl.ala.org/techconnect/?p=4001
먼저 구글 스프레드시트를 웹에 게시해야합니다. 이전 글에서의 스크립트를 웹에 게시와는 다르니 다시 따라해주세요.
쿼리 할 스프레드시트에서 '파일-웹에게시'로 들어갑니다.
모든시트를 선택하고, 파일이 수정되면 다시게시에 체크되어있는지 확인한 뒤 '게시시작'을 누릅니다.
(게시를 하면 링크가 있는 모든 사람이 데이터를 볼 수 있게됩니다. 민감한 데이터는 이 방법을 통해 쿼리하면 안됩니다.
게시를 하더라도 수정권한이 넘어가는 것은 아닙니다.)
그러면 아래에 게시URL이 나타납니다.
※지난 포스팅의 웹앱URL과는 다른 URL입니다. 출력에는 이 URL을 사용합니다.
게시URL은 다음과 같은 구조를 갖고 있습니다.
https://docs.google.com/spreadsheets/d/1fGzLf3j7h3o4fCHT0Aek7_XCtUACwuF_VWqlP2aF73w/pubhtml
여기서 파란색 부분이 key입니다. 앞으로 계속 쓰이게 될테니 기억해주세요.
시트가 여러개 있는경우 시트로 이동하면 주소표시줄에 gid= 뒤 숫자가 있을겁니다.
바로 이 숫자가 시트를 나타내는 숫자이니 이것도 기억해주세요.
다음 url은 구글스프레드시트를 html로 보여줍니다.
- https://spreadsheets.google.com/tq?tqx=out:html&tq=&key=___&gid=___
tq?tqx=out:html는 HTML로 출력하기 위한 파라메터입니다.
&tq=는 쿼리 언어를 입력하게 됩니다. 구글api의 쿼리언어는 SQL과 거의 같다고 하니 쿼리언어를 아시는 분들은 쉽게 다룰 수 있을 겁니다.
&key=___의 빈칸에는 위에 복사해둔 key를 넣으시면 되고,
&gid=___의 빈칸에는 위에서 알아본 시트 번호가 들어가게됩니다.
그러면 예를 들어봅시다.
tq파라메터를 넣지 않고, key와 gid값만 넣으면 다음과 같이 스프레드시트 전체가 출력됩니다.
이제 tq파라메터에 쿼리언어를 넣어보겠습니다.저도 쿼리언어는 잘모르지만, 간단합니다.
A,B,C 열을 출력하되, A열에 /228을 포함한 행만 출력한다는 언어는 다음과 같이 표현합니다.
SELECT A,B,C WHERE A CONTAINS '/228'
(SQL은 여기서 배워볼 수 있습니다 http://www.w3schools.com/sql/sql_intro.asp)
완성된 url은 다음과 같습니다. 중간의 띄어쓰기는 모두 +로 바꿔서 넣어야합니다.
https://spreadsheets.google.com/tq?tqx=out:html&tq=SELECT+A,B,C+WHERE+A+CONTAINS+'/228'&key=1fGzLf3j7h3o4fCHT0Aek7_XCtUACwuF_VWqlP2aF73w&gid=1179398900
iframe으로 쿼리 결과 불러오기
<iframe src="https://docs.google.com/spreadsheets/d/1fGzLf3j7h3o4fCHT0Aek7_XCtUACwuF_VWqlP2aF73w/gviz/tq?tqx=out:html&tq=SELECT+A,B,C+WHERE+A+CONTAINS+'228'&gid=1179398900" width="130" height="90" frameborder="0" seamless></iframe>
위와 같이 iframe으로 원하는 결과를 표시하면 아래와같이 나타납니다.
아래는 현재 사용중인 포스트당 조회수 확인 스크립트입니다.
<script>
var path=location.pathname;
document.write('<iframe src="https:\/\/docs.google.com/spreadsheets\/d\/1fGzLf3j7h3o4fCHT0Aek7_XCtUACwuF_VWqlP2aF73w\/gviz\/tq?tqx=out:html&tq=SELECT+B,C+WHERE+A+CONTAINS+\''+path+'\'&gid=1179398900" width="130" height="90" frameborder="0" seamless><\/iframe>')
</script>
결과는 다음과같이 나타납니다.
다음 포스트는 출력부분에 대해서 좀더 연구가 필요할 것 같습니다.
더 좋은 방법이 있다면 제보 부탁드립니다!
구글 스프레드시트를 데이터베이스로 이용하기 - 1.1.1오래된 데이터 자동 삭제 스크립트
티스토리에 오류 제보하기 버튼을 만들어보자 - 구글 스프레드 시트를 데이터베이스로 이용하기
구글 스프레드시트를 데이터베이스로 이용하기 - 2.1 ajax로 json데이터 받아오기편
티스토리 개별 포스트 조회수 및 순위 표시하기 - 구글 스프레드시트를 데이터베이스로 이용하기