투자.재테크
[구글 스프레드시트] 업비트 API 결과값 업데이트 안 될경우
헬로덱
2024. 11. 18. 09:27
반응형
2024.11.14 - [투자.재테크] - [구글 스프레드시트] 업비트 코인 현재 가격 / 전일 가격 가져오기
지난 글에서 Apps Sctipt를 이용하여 코인의 실시간 현재 가격을 가져오도록 만들었습니다.
그런데 다음날 보면 아침 9시 이후에도 새로운 값을 가져오지 못하는 경우가 있었습니다.
새로 함수를 작성해서 셀에 입력해보면 잘 가져오는 것 같아 방법을 찾아보았습니다.
계산량을 줄이기 위해 자동으로 리프레시를 잘 안 해주는 것 같아 flush를 하도록 하겠습니다.
추가
SpreadsheetApp.flush(); // 강제로 계산 요청
추가된 최종버전
function clearValues() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange('A4:J1000'); // 값을 지우려는 셀 영역을 지정합니다.
range.clearContent(); // 셀 영역의 내용을 지웁니다.
}
function getCoinPrice(ticker, type) {
// 업비트 API URL 설정
const url = `https://api.upbit.com/v1/candles/days?market=KRW-${ticker}&count=2`;
const urlTicker = `https://api.upbit.com/v1/ticker?markets=KRW-${ticker}`;
try {
// 어제와 오늘 데이터를 가져오기 위해 일봉 API 호출
const response = UrlFetchApp.fetch(url, { method: 'get', muteHttpExceptions: true });
const data = JSON.parse(response.getContentText());
// 현재가 데이터를 가져오기 위해 티커 API 호출
const responseTicker = UrlFetchApp.fetch(urlTicker, { method: 'get', muteHttpExceptions: true });
const tickerData = JSON.parse(responseTicker.getContentText());
// 어제 데이터 (index 1)와 오늘 데이터 (index 0) 가져오기
const yesterdayData = data[1];
const todayData = data[0];
const currentPrice = tickerData[0].trade_price;
SpreadsheetApp.flush(); // 강제로 계산 요청
// type 파라미터에 따라 적절한 값을 반환
switch (type.toLowerCase()) {
case 'h':
return yesterdayData.high_price; // 전일 고가
case 'l':
return yesterdayData.low_price; // 전일 저가
case 'o':
return todayData.opening_price; // 오늘 시가
case 'c':
return currentPrice; // 현재가
default:
return "Invalid type parameter"; // 잘못된 파라미터 입력 시 오류 메시지 반환
}
} catch (error) {
return "Error fetching data";
}
}
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
반응형