본문 바로가기

컴퓨터 활용/구글스프레드시트 응용

체크박스 선택 하여 국내주가 실시간 수집하기

체크박스로 선택한 종목의 주가를 수집하는 예제 입니다. 실행하기에서 선택 주가수집을 선택하면 다중으로 체크된 주가를 D열 부터 채워 넣습니다.


동작원리는 체크박스 선택 삭제와 같습니다. getStockChecked() 함수에서 삭제대신에 주가 수집하는 getNaverStock() 함수로 변경 되었을 뿐입니다.

/* 
 * 체크된 종목 주가 가져오기 
 * 대상 시트명 :  체크박스구현시트 
 */
 
function getStockChecked() 
{
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = activeSheet.getSheetByName('체크박스구현');
  
  var tickerArray = sheet.getDataRange().getValues(); // 데이터가 들어있는 테이블
  var headers = tickerArray.shift(); // 헤더 없에기 rows 배열에 1행 삭제 
  
  // 현재 시간
  var dt = new Date();
  var strDateTime = Utilities.formatDate(dt, "GMT+9", "yyyy-MM-dd HH:mm:ss");
 
  var data ;
  
  for(var i=0 ; i < tickerArray.length; i++)
  {
    var stockRowIndex = i + 2;  // 선택한 라인 번호 
    // 기타 열 참조 
    var stockName = tickerArray[i][1]; // 종목명
    var stockCode = tickerArray[i][2];  // 종목코드 

	// 체크되어있으면
    if( tickerArray[i][0] == true ) // 체크박스 체크여부
    {
      Logger.log(stockRowIndex + stockName);
      // 주가 가져오기 
  
  	  // 주가 수집한 배열 입력 
      data = StockAdmin.getNaverStock(stockCode,"list");
      
      //0현재가 1등락률 2전일대비	3전일주가 4거래량 5시장정보 6기준일시	7수집일시
	  // data[0] 현재가 
      // data[1] 등락률
     
      // 영역은 D 체크한행번호: K 체크한행번호
      sheet.getRange("D"+stockRowIndex.toString()+":K"+stockRowIndex.toString()).setValues(data);
     }
   
  }
    
}

StockAdmin.getNaverStock 함수가 주가를 수집하는 함수 인데 주가 수집하기 시트에 있는 getNaverStock 함수를 라이버러리로 만들어서 참조했습니다. 다른 스프레드 시트의 함수 참조를 위한 라이버러리 추기는 Apps Script 에디터에서 라이버러리 추가하고 시트의 스크립트 ID 를 입력 하여 추가 가능합니다.


구해진 주가는 0현재가 1등락률 2전일대비 3전일주가 4거래량 5시장정보 6기준일시 7수집일시
data[0] 는 현재가 data[1] 등락률 같이 배열에 들어가게 됩니다.

영역은 D체크한행번호: K체크한행번호로 정해지고 해당 영역에 setValues( 배열변수)로 실행하면 바로 채워 집니다.

  sheet.getRange("D"+stockRowIndex.toString()+":K"+stockRowIndex.toString()).setValues(data);


예제 시트는 다음에 있습니다. 파일 메뉴에 사본만들기를 실행해서 개인 구글드라이브에 복사한 후 사용하면 됩니다.
https://docs.google.com/spreadsheets/d/1MbsSABTjB1bvNUXTC8Ur5EJY65YkJSwRa0GMN2JDxIE/edit#gid=2030311116

체크박스 다루기

체크박스구현 종목명,종목코드,현재가,등락률,전일대비,전일주가,거래량,시장정보,기준일시,수집일시 현대차,005380 삼성전자,005930,60,900,-0.98%,-600,61,500,6,882,431,코스피,2022-08-19 16:11:00,2022-08-21 17:53

docs.google.com