[주식 관리] Google Sheets에 매일 평가액/수익률 기록하기 (Feat. Google sheets script)

내가 투자하고 싶은 주식에 대한 평가액 및 수익률을 자동으로 기록하고 싶었습니다.

단순히 생각하면 매일 일정한 시간에 google sheet를 실행해서 그때의 평가액/수익률을 시트에 추가하면 될 것 같지만, 문제는 매일 하는 것은 매우 귀찮은 일이기에 하지 않고 있었습니다..

 

왠지 구글이라면 그런 방법이 있지 않을까해서 구글링 해보니 "역시나" 방법은 있었습니다.

요즘 시대에는 "어떻게 할 것인가?"는 문제되지 않는다. "무엇을 할 것인가?"가 중요하다는 것을 새삼 느끼게 되었습니다.

 

위의 기능을 구현하기 위해서는 두가지 과정을 거쳐야 합니다.

 Step 1 : Google sheets의 script 기능을 사용하여 원하는 값을 원하는 위치에 기록하도록 설정

 Step 2 : Step 1에서 구현한 기능을 원하는 시간에 발동하도록 설정

 

두 가지 모두 Google sheets의 스크립트 편집기 내에서 설정을 해야 합니다. 

 

Step 1 : Google sheets의 script 기능을 사용하여 원하는 값을 원하는 위치에 기록하도록 설정하기

이 기능을 사용하기 위해서는 Google sheets에 포함되어 있는 "스크립트 편집기"를 사용해야 합니다.

처음 사용해보는 기능이지만 엑셀의 VBA와 유사한 기능이 아닐까 싶었고, 조금 찾아 보니 아래와 같은 차이점이 있었습니다.

  • 엑셀 VBA : Visual basic
  • GS Script : JAVAscript

Google Sheets 스크립트 편집기는 아래 그림과 같이 "도구>스크립트 편집기" 순으로 진입 가능합니다.

이미지

JAVAscript는 한번도 사용해보지 않았지만, 구현하고자 하는 기능이 단순하기 때문에 구글링을 통해서 다음과 같이 코드를 구성하였습니다

총 10줄도 안되는 코드이니 이해에 어려움은 없을 것 같고, 자세한 내용은 코드내에 주석을 참고하시길 바랍니다.

대략 설명드리자면,

  • 기록을 남기고자 하는 값이 있는 영역을 지정("History" sheet의 A2:J2)
  • 지정된 영역의 값을 배열(D)에 할당
  • D의 첫번째 값은 기록할 당시 시간으로 할당
  • D를 "History" sheet의 가장 마지막 행에 Append
function recordHistory() {
// 현재 활성화된 스프레드 시트에 대한 정보를 A에 할당
  var A = SpreadsheetApp.getActiveSpreadsheet(); 
// 현재 할당된 변수 A의 Sheet 중 "History"시트를 B(시트)변수에 할당
  var B = A.getSheetByName("History"); 
// 현재 할당된 변수 B시트(History 시트)의 A2~J2 범위를 C에 할당
  var C = B.getRange("A2:J2");  
// C의 값을 D에 배열형태로 저장한다.
  var D = C.getValues();
// D의 첫번째 셀에는 현재 시간을 저장한다.
// D는 2차원 형태의 배열이자만 C가 1행의 데이터만 D에 저장했기 때문에 실제로는 1차원 저장형태로 나타난다.. 
  D[0][0] = new Date();  
// 시트의 가장 마직막 행에 D의 첫번째 행의 값을 기록한다.
  B.appendRow(D[0]); 
};

코드가 정상적으로 작성이 되었다면, 아래 그림의 "실행" 버튼을 누르면 코드가 실행됩니다. 

주의사항 : 스크립트로 만든 함수가 여러 개라면 아래 그림 빨간 박스에 실행하기 원하는 함수명이 올바르게 지정되었는지 확인해야 한다.

이미지

잘 실행되었다면 아래처럼 한번 실행할 때 마다 한 행씩 지정된 영역의 값들이 기록됩니다.

여기까지 정상적으로 되었다면 "Step 1 Complete."

이미지
"마우스가 왔다갔다만 한다면 클릭하셔서 보시면 됩니다."

 Step 2 : Step 1에서 구현한 기능을 원하는 시간에 발동하도록 설정하기

Step 1과 완성되었으면 다음은 해당 기능을 매일 실행시키는 것이 남아 있습니다.

Google sheets에는 "트리거"라는 기능이 있습니다. 이 기능을 통해서 특정 조건에서 특정 함수를 실행시킬 수 있습니다.

 

"트리거" 기능은 스크립트 편집기에서 시계 버튼을 클릭하면 실행할 수 있습니다. (아래그림 참조)

 

이미지

"트리거" 기능을 클릭하면 아래와 같이 5가지 항목을 선택해야 합니다.

  1. 실행할 함수 선택 : 말그대로 조건이 만족할 때 실행할 함수 선택(여기서는 recordHistory)
  2. 실행할 배포 선택 : 실행하기 위한 패키지 선택(여기서는 기본 패키지 Head)
  3. 이벤트 소스 선택 : 조건으로 걸 객체를 선택(스프레드 시트, 시간, 캘린더 중 택, 여기서는 시간)
  4. 이벤트 유형 선택 : 각 조건에 맞는 상세 조건 선택(여기서는 시간 선택을 위해 시간 단위 타이머 선택)
  5. 트리거 실패 알림 설정 : 실행 시 오류가 있을 경우 알림을 받을 주기 선택(여기서는 매일 알림)

이미지

저는 매일 오후 4시~5시 사이에 하루간의 결과가 반영된 평가액/수익률을 기록하기 위해서 아래와 같이 설정하였습니다.  정상적으로 실행이 되면  매일 오후 4시~5시에 평가액/수익률이 History 시트의 마지막 행에 추가됩니다.

 

이미지

 

누적된 데이터를 가지고 그래프나 차트를 그리면 자신의 투자 현황을 확인할 수 있을 것입니다.