-
[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 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. 실행 코드 확인
실행 결과
아직은 코드가 초안이라서 불안하지만 그래도 유용하게 쓰일 것으로 보인다. 주식을 가계부 형태로 관리하는 것이 본인의 투자를 뒤돌아 볼 수 있는 좋은 기회일 것 같아서 해당 코드를 공유하게 되었다. 텍스트 인식이 간혹 아래와 같이 나오는 경우 오류가 발생할 수 있으니 이러한 데이터 가지들을 정리하고 실행하는 것을 추천드립니다.
종목명이 두줄로 분리되어서 나왔다. '주식' 카테고리의 다른 글
이머징 마켓과 중국의 대만 압박에 대한 분석 (4) 2023.05.21 토스증권 주식고수 타이틀 획득(23년 2월 3일) (0) 2023.03.12 금 가격 더 떨어질까? 230217 (0) 2023.02.17 나도 주식할래!, #계란을 한 바구니에 담지마라 (0) 2023.02.17 사회초년생이 주식을 해야하는 이유 (3) 2023.02.13