구글스프레드시트에서 단일 주식 종목의 주식 정보를 가져오는 함수 입니다.
네이버증권의 일별 종목페이지에서 가져왔습니다.
googlefinance함수 같이 직접 만든 것입니다. 함수의 이름은 getNaverStock() 입니다.
사용법은 다음과 같습니다 .
종목코드는 반드시 넣어야 하고 아이템은 생락하면 배열로 리턴 됩니다.
국내 주가 가져오기(잠겨있는 셀은 복사 가능)
국내주가 코스피 ,현재가,전일비,임시등락률,종목코드,시장,등락률,총라인수,2999 삼성전자,59,000,200,-0.34%,005930,코스피,-0.34%,업데이트 일시,1:44:44 SK하이닉스,78,400,1,800,+2.35%,000660,코스피,2.35% 삼성�
docs.google.com
소스는 스크립트에디터에 있습니다
사용한 내장 함수는 UrlFetchApp 클래스의 fetch 함수 입니다. 웹페이지를 텍스트로 긁어 옵니다.
그리고 자바 스크립트 구문 과 자바스크립트의 정규식 함수를 이용했습니다.
// 네이버 단일 주가 = 메인 페이지 이용
function getNaverStock(code,item)
{
if(!code) code = "005930"; // 없으면 삼성전자로
var url = 'https://finance.naver.com/item/main.nhn?code='+code;
var html = UrlFetchApp.fetch(url).getContentText("euckr"); // euckr 문자셋
var searchstring = '<dl class="blind">';
// var searchstring2 = '<table summary="PER/EPS 정보" class="per_table">';
var index = html.search(searchstring);
var value = []; // 최종 리턴 배열변수
var price = ""; // 주가
var changepct = ""; // 등락률
var change = "" //
if (index >= 0)
{
var pos = index + searchstring.length;
var t = html.substring(pos);
var pos2 = t.search('</dl>');
var v = html.substring(pos, pos+pos2);
var tmp = v.split("</dd>");
// <dd>현재가 11,050 전일대비 보합 0 0.00 퍼센트</dd>
// <dd>현재가 56,400 전일대비 상승 2,000 플러스 3.68 퍼센트</dd>
var reg = /현재가 ([0-9,]+) 전일대비 (상승|하락|보합) ([0-9,]+) (플러스|마이너스)* ([0-9\.]+) 퍼센트/g;
var r = reg.exec(v);
price = parseInt(r[1].replace(",",""));
if(r[2] =="상승")
changepct = + r[5]/100;
else
changepct = - r[5]/100;
change = parseInt(r[3].replace(",",""));
// 종목명 삼성전자
var reg = /<dd>종목명(.+)<\/dd>/g; r = reg.exec(v); var stockname = r[1].trim();
//<dd>종목코드 005930 코스피</dd>
var reg = /종목코드 ([0-9A-Z]{6}) (코스피|코스닥)/g; r = reg.exec(v);
var mkt = r[2];
//<dd>전일가 54,400</dd>
var reg = /전일가 ([0-9,]+)/g; r = reg.exec(v); var yest = r[1];
//<dd>거래량 22,340,638</dd>
var reg = /거래량 ([0-9,]+)/g; r = reg.exec(v); var volume = r[1];
var reg = /([0-9]{4})년 ([0-9]{2})월 ([0-9]{2})일 ([0-9]{2})시 ([0-9]{2})분 기준/g; r = reg.exec(v);
var getDate = r.slice(1,4).join("-") +" " +r.slice(4,6).join(":")+":00";
value.push(stockname);
value.push(price);
value.push(change);
value.push(parseFloat(changepct));
value.push(yest);
value.push(volume);
value.push(mkt);
value.push(getDate);
var rValue = new Array();
rValue[0] = value;
}
switch(item)
{
case "name" : return stockname; break;
case "price" : return price; break
case "changepct" : return parseFloat(changepct); break
case "change": return change; break;
case "market": return mkt; break;
case "yesterday": return yest; break;
case "volume" : return volume; break;
case "기준일시" : return getDate; break;
default: return rValue ; break
}
throw "분석실패:"+url;
}
value 변수 같이 return 값이 배열이 되면 구글 스프레드 시트의 옆 방향으로 셀이 채워 집니다.
단점은 실시간 업데이트가 안 되어 수동으로 해줘야 합니다.
전 종목 시세가 필요 없는 사람이면 위 함수를 쓰는 것이 빠를 것 같고 필요한 사람이면 다음 포스팅을 참고 하세요.
구글스프레드시트에서 국내주가 가져오기 변경 사항
구글 스프레드 시트에서 국내 주가를 가져오는 방법에 대하여 위에 포스팅에서 언급한 적이 있습니다. 두...
blog.naver.com
'컴퓨터 활용 > 구글스프레드시트 응용' 카테고리의 다른 글
구글시트 국내 주가관리 시트에서 신규 종목 생성시 에러 수정 (0) | 2020.10.29 |
---|---|
구글스프레드시트에서 가상화폐 정보 가져오기 (5) | 2020.10.10 |
구글스프레드시트에서 국내주가 가져오기 변경 사항 (0) | 2020.09.02 |
국내 주가 정보 가져오기 문제 해결 @구글스프레드시트로하는 국내 주식 수익률 관리 (8) | 2019.08.23 |
기업 분석 보고서 등 몇가지 기능 추가 @구글스프레드시트 주식 수익률 관리 (2) | 2018.11.27 |