ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Google Script] 토스 증권 주문 내역 정리하기
    주식 2023. 4. 23. 16:36

    토스 증권에 거래내역을 엑셀 혹은 csv 형태로 Export하는 기능이 없다.

    물론 pdf로 하는 기능은 존재한다. 

    토--스

     

    PDF 형태로 거래내역서 받기

    내 계좌 보기 -> 우측 상단의 관리 버튼 ->증명서 발급 -> 거래내역서 

    방법을 통하면 거래 내역서를 PDF 형태로 받을 수 있다. 엑셀로 변환하면 아래처럼 나온다.

     

    토스증권 거래 내역서
    토스증권 거래내역서

    하지만 이 형태로 데이터 가공은 많이 힘들어 보인다.

     

    그래서

    이용한 방법은 주문내역을 스크롤 캡쳐를 통해 이미지를 준비하고 Google Docs의 이미지 내 텍스트 추출 기능을 이용하였다. 

     

    1. 아래와 같이 토스증권 내 주문내역에서 스크롤 캡쳐 진행

    토스증권 주문내역
    화질 구지 죄송합니다.

    2. Google Drive 내 이미지 업로드

     

    구글드라이브 토스증권
    구글 드라이브 내 이미지를 업로드한 모습

     

    3. Google Doc를 통한 이미지 추출

     

    구글 독스 이미지추출
    연결앱 -> Google 문서
    구글 독스 이미지 추출
    이미지 내 텍스트 추출 결과물

     

    4. 구글 스프레드 시트 내 복사

     

    구글 스프레드 시트
    구글 스프레드 시트 -> 주문내역 복사

     

    5. 날짜 위에 커서 입력

     

    날짜 위에 커서를 올려야한다

    6. 매크로 코드 붙여 넣기

     

    app script
    app scirpt 혹은 매크로 관리를 통해 아래 스크립트를 복사 붙여넣기 한다

     

    function myFunction3() {
        var spreadsheet = SpreadsheetApp.getActive();
        var sheet1 = SpreadsheetApp.getActiveSheet(); 
       
    
       for(var i=1; i < 500 ; i++){
        
    
        var text = sheet1.getCurrentCell().getValue()
        var iftext=text.toString().slice(-1)
        
        
        if(iftext=="4" || iftext=="5"|| iftext=="6"|| iftext=="7"|| iftext=="8"|| iftext=="9"|| iftext=="1"|| iftext=="2"|| iftext=="3"|| iftext=="0") {
       
         
       spreadsheet.getCurrentCell().offset(1, 0).activate();
       spreadsheet.getCurrentCell().offset(-1, 0).moveTo(spreadsheet.getActiveRange());
       spreadsheet.getCurrentCell().offset(1, 0).activate();
    
    
     }
      
      
       spreadsheet.getCurrentCell().offset(2, 0).activate();
        
       var text1 = sheet1.getCurrentCell().getValue();
    
       spreadsheet.getCurrentCell().offset(2, 0).activate();
       var text2 = sheet1.getCurrentCell().getValue();
    
      spreadsheet.getCurrentCell().offset(-2, 0).activate();
      
      if(text1.slice(-2)=="취소"){
      sheet = spreadsheet.getActiveSheet();
      
      sheet.getRange(spreadsheet.getCurrentCell().getRow() -2, 1, 4, sheet.getMaxColumns()).activate();
      spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
      spreadsheet.getCurrentCell().offset(0, 1).activate();
      }
     
      else{
      
        if(text2.slice(-4,-2)=="구매"){
            spreadsheet.getCurrentCell().offset(-2, 2).activate();
            spreadsheet.getCurrentCell().offset(2, -2).moveTo(spreadsheet.getActiveRange());
            spreadsheet.getCurrentCell().offset(0, 1).activate();
            spreadsheet.getCurrentCell().offset(4, -3).moveTo(spreadsheet.getActiveRange());
            spreadsheet.getCurrentCell().offset(5, -3).activate();
            spreadsheet.getCurrentCell().offset(0, 1).activate();
        }
        else{
            spreadsheet.getCurrentCell().offset(-2, 5).activate();
            spreadsheet.getCurrentCell().offset(2, -5).moveTo(spreadsheet.getActiveRange());
            spreadsheet.getCurrentCell().offset(0, 1).activate();
            spreadsheet.getCurrentCell().offset(4, -6).moveTo(spreadsheet.getActiveRange());
            spreadsheet.getCurrentCell().offset(5, -6).activate();
            spreadsheet.getCurrentCell().offset(0, 1).activate();
        
    
    
    
        }
    
    
    
      var sheet = spreadsheet.getActiveSheet();
      sheet.getRange(spreadsheet.getCurrentCell().getRow() - 4, 1, 5, sheet.getMaxColumns()).activate();
      
      
      spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
      spreadsheet.getCurrentCell().offset(0, 1).activate();
      }
    
    
      }
      sheet1.getRange(1, 1, sheet1.getMaxRows(), sheet1.getMaxColumns()).activate();
      spreadsheet.setCurrentCell(spreadsheet.getRange('A2'));
      spreadsheet.getActiveRangeList().setFontColor('#000000');
    
    }

     

    7. 실행 코드 확인

     

    코드 실행 모습
    실행 결과

     


    아직은 코드가 초안이라서 불안하지만 그래도 유용하게 쓰일 것으로 보인다. 주식을 가계부 형태로 관리하는 것이 본인의 투자를 뒤돌아 볼 수 있는 좋은 기회일 것 같아서 해당 코드를 공유하게 되었다. 텍스트 인식이 간혹 아래와 같이 나오는 경우 오류가 발생할 수 있으니 이러한 데이터 가지들을 정리하고 실행하는 것을 추천드립니다.

     

    종목명이 두줄로 분리되어서 나왔다.

    댓글

Designed by Tistory.