반응형


    구글 스프레드시트를 데이터베이스로 이용하기 - 1. ajax POST를 통한 기록 편


    구글 스프레드시트를 데이터베이스로 이용하기 - 1.1 방문로그 기록 편


    구글 스프레드시트를 데이터베이스로 이용하기 - 2.Query 편


    구글 스프레드시트를 데이터베이스로 이용하기 - 1.1.1오래된 데이터 자동 삭제 스크립트


    티스토리에 오류 제보하기 버튼을 만들어보자 - 구글 스프레드 시트를 데이터베이스로 이용하기


    구글 스프레드시트를 데이터베이스로 이용하기 - 2.1 ajax로 json데이터 받아오기편



    오늘은 티스토리에 오류제보하기 버튼을 만들어보자에 이은 두번째 응용편입니다.



    1.1의 방문로그 기록편과 2.1의 ajax로 json데이터 받아오기편을 종합하면 티스토리 개별포스트 조회수 및 순위 표시하기가 가능합니다!

    두 포스트를 이해하시면 직접 만들 수도 있지만, 이번 포스트에서는 더 쉽게, 따라하기만 해도 완성되도록 재구성해봤습니다.



    방문로그 기록하기

    https://docs.google.com/spreadsheets/d/1kBc5fBpYH0eGFHeIyfzMlIWkJqq4YcT6F3dHgyQCwtg/edit?usp=sharing

    먼저 링크로 접속합니다.


    파일 - 사본만들기를 선택합니다. (구글 로그인이 필요합니다.)


    사본이 만들어졌습니다. 원본링크는 닫으셔도 됩니다.

    이 사본은 본인의 구글드라이브에 존재하고, 제목은 얼마든지 수정하셔도 됩니다.


    도구-스크립트 편집기로 들어갑니다.


    스크립트는 이미 작성되어있습니다.


    실행 - setup 을 선택합니다.


    계속


    동의를 해줍니다.

    (구글 스프레드시트에 데이터 기록을 위한 동의작업입니다.)


    동의 후에 다시한번 실행-setup을 해줍니다.


    시계모양 아이콘을 선택하여 위와같이 새 트리거를 추가합니다.

    cleanUp - 시간기반 - 시간타이머 - 2시간마다 - 저장.


    게시 - 웹앱으로 배포를 클릭합니다.


    프로젝트버전은 새버전저장, 앱을실행할 사용자는 '나', 웹에 액세스할 수 있는 사용자는 누구나(익명 사용자 포함)을 선택하고 배포합니다.


    완성되었습니다. 현재웹앱 URL이라고 표시된 주소를 복사해둡니다.



    이제 티스토리 스킨편집 - HTML/CSS편집으로 들어가 skin.html에서 </body>를 찾아 윗줄에 다음을 붙여넣습니다.

    <script>

    // 구글 스프레드시트에 방문로그 기록 - http://nubiz.tistory.com/

      $.ajax({

          url: " 여기에 복사한 주소 붙여넣기 ",

          data: {

              path: decodeURIComponent(location.pathname),

              title: document.getElementsByTagName("TITLE")[0].text,

              referrer: decodeURIComponent(document.referrer)

          },

          type: "POST"

      });

    </script>

    위에서 복사해둔 웹앱URL을 파란색 표시한 곳에 붙여넣습니다.


    이제 방문로그 기록하기 설치는 끝났습니다!



    .


    방문로그를 기초로하여 조회수 표시하기.


    먼저 스프레드시트를 웹에 게시하는 과정이 필요합니다.

    '파일'-'웹에 게시'를 클릭합니다

    게시버튼을 눌러 '게시됨' 상태가 된것을 확인합니다.


    이번엔 위에서 방문로그 기록에 쓴 웹앱URL과 다른 URL이 필요합니다. (구글 스프레드시트를 데이터베이스로 이용하기 - 2.1에 자세히 소개되어있습니다.)

    위에서 사본으로 만든 스프레드시트의 주소를 확인하여 key값을 복사해둡니다.
    혹시 닫아버렸다면 https://drive.google.com/drive/ 에서 찾을 수 있습니다.
    빨간 박스 부분이 key입니다.

    복사한 key값을 아래 url의 key대신 넣으세요.(띄어쓰기 들어가지 않게 주의)

    <script>

    //주간 조회수 삽입

    var url=location.pathname;

    function getViews(){

      $("div.getViews").html("불러오는 중..");

    if(url!="/"){

    var ajax_url = "https://spreadsheets.google.com/feeds/list/key/2/public/basic?alt=json-in-script&callback=?";

    $.getJSON(ajax_url,function(data){

    var entry=data.feed.entry;

    for(var i in entry){ // 노드 탐색 

    if(entry[i].title.$t == url){

    var views = entry[i].content.$t.match(/views: (\d+)/)[1];

    var ranking = entry[i].content.$t.match(/rank: (\d+)/)[1];

    break;

    }

    $("div.getViews").html("주간 조회수 : "+views+"회, 주간 순위 : "+ranking+"위");

    });

    }

    }

    </script>

    완성된 스크립트를 skin.html의 아까 첨가한 스크립트 아랫줄에 붙여넣습니다.(</body>윗줄)


    마지막으로 클릭하여 조회수를 확인할 수 있는 버튼을 skin.html의 원하는 곳에 삽입합니다.

    <div class="getViews" onclick="getViews();">조회수 확인</div>

    예를들어 ##_article_rep_##아래에 붙여넣으면 본문 아래 표시되겠죠.


    끝났습니다!

    방문로그가 어느정도 채워지기를 기다려보세요~!



    유의사항

    • 나쁜용도로 쓰지 마세요!
    • 일주일 페이지뷰가 10만이 넘는분들은 스프레드시트-스크립트 편집기에서 아래쪽 cleanUp함수부분에서 삭제할 날짜를 좀 줄이셔야합니다.
    • 스킨에 jQuery가 적용되지 않은경우, </head> 윗줄에 다음을 붙여넣으세요. (대부분의 반응형 스킨에서는 필요 없습니다.)
      <script>window.jQuery || document.write('<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js"><\/script>');</script>
    • 추가항목 기록을 원하시면 구글 스프레드시트 데이터베이스로 이용하기 1편을 참조해주세요.
    • 포스팅수가 1000개가 넘어가는 경우 Sheet2에서 아래쪽에 1000행 추가를 해주신 후, B,C열 아래쪽에 들어있는 함수를 2000행까지 끌어주세요.(엑셀 써보셨으면 아시죠?)
    • Sheet2에서 정렬을 시도하지마세요. 정렬을 하려면 시트3을 만들어서 하시기 바랍니다


    2016년 7월 현재는 아래 방법을 사용중입니다.

    구글 애널리틱스 api를 이용한 조회수 확인 버튼 만들기


    반응형
    Posted by 뭐하라