반응형





    이전의 '방문로그 기록편'에서 이어지는 글입니다.

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


    방문로그 기록편에서 구글스프레드시트의 40만셀 제한때문에, 5만개정도의 로그까지만 기록이 가능하다고 언급한적이 있습니다.

    (40만셀 제한이 명시되어있지만 현재 40만셀이 넘었음에도 계속 기록이 진행되는걸로 봐서 제한선이 더 확대된 것 같습니다.)

    때문에, 주기적으로 직접 오래된 데이터를 지워줘야한다고 했었는데요.


    이번 포스팅에서는 자동으로 일정시점이 지난 로그는 삭제하는 스크립트를 알아보도록 하겠습니다.




    일정 날짜가 지난 로그는 삭제하도록 하기


    로그가 기록되고있는 스프레드시트에서

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



    지난번에 작성해둔 스크립트가 있을겁니다. 맨밑에 다음 코드를 붙여넣습니다.


    function cleanUp() {

    //오래된 로그를 삭제합니다.

    //A1셀이 Timestamp 이어야 합니다.

    //트리거 설정을 해주어야합니다. (시간기반 - 일일타이머 추천)

      var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));

      var sheet = doc.getSheetByName(SHEET_NAME);

      var lastRow = sheet.getLastRow();

      var timestamps = sheet.getRange(2,1,lastRow).getValues()

    // 아래 thresholdDays 만큼 날짜가 지난 열은 삭제됩니다.

      var thresholdDays = 7 

    // 예) thresholdDays = 3 으로 설정하면, 3일 지난 데이터는 삭제됩니다.

      var d = new Date();

      var lastEdge = 0;

      for (i in timestamps){

        if(Date.parse(timestamps[i]) < d-thresholdDays*86400000){var lastEdge=i}

        else {break;}

      }

      if (lastEdge !==0) {

        sheet.deleteRows(2,lastEdge);

        Logger.log("The old "+lastEdge+" Rows were(was) deleted");

      } else {

        Logger.log("Any rows were not deleted");

      }

    }

    (이전 스크립트에 치명적 문제가 있어서 수정했습니다. - 2014-11-12)

    수정할 부분은 파란색 표시된 thresholdDays입니다. 7로 그대로 두면, 7일이 지난 데이터가 삭제되게 됩니다.



    저장 후 게시-업데이트를 해줍니다.



    시계표시를 눌러 트리거 설정을 해줍니다.



    cleanUp 함수를 선택하고, 실행할 주기를 설정합니다.

    시간당 5만뷰가 넘는 블로거는 거의 없을거란 가정하에.. 2시간 주기면 매우 충분합니다.


    Save를 누르면 이제 2시간마다, 지정한 날짜보다 오래된 데이터는 자동으로 삭제됩니다.

    반응형
    Posted by 뭐하라

    문제가 있나요?(?)

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