반응형


    구글 스프레드시트를 데이터베이스로 이용하기 - 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 뭐하라

    문제가 있나요?(?)

    내용상 오류가 있음 업데이트 필요 화면이 깨짐 기타 수정이 필요함