Toy Projects

구글 스프레드시트에 업비트 코인 현재 가격 가져오기

인수은 2023. 6. 26. 19:02

코인 매매를 하면서 가장 필요했던 것은 코인의 현재 가격을 가져오는 것이었다.
이미 pyupbit로 현재 가격을 가져와서 gspread로 Google Spreadsheet에 기입하는 파이썬 코드를 작성해두긴 했지만 내 맥북이 없으면 코드를 실행하기 어렵고, 맥북이 있어도 터미널로 경로 찾아가서 실행하는 작업도 꽤나 귀찮다.
그래서 최대한 Spreadsheet 내에서 현재가격을 가져오는 방법을 찾아보았다.
처음에 발견한 것은 CryptoWatch에서 만든 CryptoFinance 모듈이지만...
몇 번 쓰면 돈 주고 쓰라고 그래서...이걸 굳이 돈 주고 써야하나? 싶어서 다른 방법을 찾다가 발견하게 되었다.

1. 스크립트 작성


먼저 자신이 관리하고 있는 코인 거래 spreadsheet에 들어간다.
그 다음, 도구 - 스크립트 편집기로 들어간다.


Code.gs를 수정해도 되고, 위 이미지처럼 스크립트를 하나 새로 만들어줘도 된다.
어쨌든 파일의 이름은 ImportJSON.gs가 되면 된다.
뒤에 .gs는 굳이 붙이지 않아도 확장자이기 때문에 알아서 붙는다.

 

 

 

출처: ImportJSON.gs, randomCell() 함수

 

위 코드를 그대로 복사해서 붙여넣으면 된다.
randomCell()함수는 ImportJSON.gs에 없는 함수인데, 수동으로 실시간 정보를 반영하기 위해서 필요한 함수이다.
나중에 이 코드를 수정하기 위해 다시 돌아와야 할 수 있지만, 일단 저장하고 나가면 된다.

2. 코인 현재 가격 가져오기

ImportJSON 함수는 구글 스프레드시트에는 없는 REST API를 사용할 수 있게 만들어주고, 결과 값을 JSON 형식으로 가져오게 된다. 그래서 현재 가격은 어떻게 가져오냐고?

 


여기 대충 코인들과 티커를 적어놓았다.
가격을 가져올 때 가장 중요한 것은 한글 이름이 아니라 티커이다!
티커는 꼭 적어주도록 하자.
그 다음, 코인의 현재가를 적어주고 싶은 곳에 ImportJSON 함수를 써주자.
ImportJSON에 필요한 변수는 URL, QUERY, parseOptions 3가지가 있다.

URL

URL은 코인의 정보들을 제공하는 업비트의 주소가 된다.
우리가 필요한 것은 코인의 현재 정보이니, url 부분에는

 

"https://api.upbit.com/v1/trades/ticks?market=KRW- "&$B2&"&count=1&dash="&$B$1

 

를 넣어주도록하자. Upbit API Docs에서 참조한 내용이다.
이 페이지에서 open, high, low 등 수많은 다른 정보들도 가져올 수 있는 것을 확인할 수 있다.
참고로 &$B2& 부분은 B2셀을 참조한다는 의미이다.
스프레드시트에서 따옴표 안에 변수를 넣어주기 위해서는 중간에 끊고 &셀&을 넣어주어야 한다.

Query


우리가 받게 되는 데이터의 형태는 이렇게 생겼다.
여기서 필요한 것은 trade_price, 즉 가장 최근에 체결된 가격이다.
그래서 query 부분에는

 

"/trade_price"

 

를 입력해주면 된다.

parseOptions


설명서를 안읽어서 살짝 고생했던 부분이다.
여기서 noHeaders를 선택해야 한다.

 

header: "trade_price"
data: 코인가격

 

으로 함수가 인식하기 때문에 우리는 헤더를 제외한 데이터만 가져올 것이다. 따라서 parseOptions에는

 

"noHeaders"

 

를 입력해주도록 하자.
모든 과정에서 " "를 꼭 삽입해주는 것을 잊지 말자.

 

현재 비트코인의 가격을 잘 가져온 것을 확인할 수 있다.

3. Refresh 버튼 만들기

아까 ImportJSON 스크립트 작성할 때 같이 작성해준 randomCell() 함수가 그 역할을 한다.

버튼 삽입


삽입 - 그림을 눌러 그림을 삽입한다.


그림은 도형을 삽입해도 되고 아니면 구글에서 원하는 이미지를 가져와서 넣어도 된다. 이미지를 넣었으면 저장 후 닫기를 눌러주자


이미지를 우클릭하면 위치 조정 및 편집이 가능하다 원하는 곳에 이미지를 붙여넣고, 점 세개를 눌러 스크립트 할당을 선택해주자


randomCell을 입력 후 확인


만약 권한이 필요하다고 뜨면 계속을 눌러 권한을 부여하자.

)


이미지 버튼을 눌러주면 B1셀에 숫자가 생기면서 코인의 현재 가격이 바뀌게 된다. 만약 B1셀에 값이 있었다면 그 값이 날라가고 숫자가 그 자리를 대체하게 된다.

B1셀 말고 다른 곳에 숫자 넣을래요


아까의 도구 - 스크립트 편집기로 들어가자.
맨 밑의 randomCell() 함수에서 getRange()부분에 랜덤숫자가 들어가기 원하는 셀을 입력 후 저장하자.
나는 C1에 랜덤 숫자가 뜨는 것으로 설정을 바꾸었다.


버튼을 눌러보니 랜덤 숫자가 C1에 생성되는 것을 확인할 수 있다.


그 다음에는 아까 URL 부분 맨 마지막 dash=(원하는셀) 부분에 아까 randomCell 함수에서 설정해 둔 셀을 입력해주자. 나는 C1에 입력했으므로 $C$1으로 입력해주었다.


가격이 성공적으로 변하는 모습을 볼 수 있다.


아까 코인티커를 변수로 지정해주었기 때문에 셀을 끌면 자동으로 가격이 입력되는 것을 확인할 수 있다.


가격도 정상적으로 변동되는 것을 확인할 수 있다.

지금까지 작업했던 내용은 여기에서 확인할 수 있다.