用 Google 試算表抓取上櫃資料教學
上市股票的股價可以用GOOGLEFINANCE("TPE:xxxx")來抓到即時資料,


但找了好久一直找不到最新可用的方法來抓上櫃的,
索性就study了一下,沒想到最後真的成功了,特別分享一下給大家也順便記錄一下
簡單說就是用"指令碼編輯器"來實現抓取台灣證券交易所的即時股價這個功能,
1.請點選 工具=>指令碼編輯器 如圖一
圖一:
2.出現圖二畫面後,將以下程式碼貼上去 如圖二,記得存檔
function OTCPRICE(code) {
var url = "https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=otc_" + code + ".tw&json=1&delay=0";
var response = UrlFetchApp.fetch(url);
var json = response.getContentText("UTF-8");
var data = JSON.parse(json);
var z = data.msgArray[0].z;
var a = data.msgArray[0].a;
var u = data.msgArray[0].u;
var ret;
if(z > '0')
ret = parseFloat(z).toFixed(2);
else if(a > '0')
ret = parseFloat(a).toFixed(2);
else //漲停價
ret = parseFloat(u).toFixed(2);
return ret;
}
function TSEPRICE(code) {
var url = "https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_" + code + ".tw&json=1&delay=0";
var response = UrlFetchApp.fetch(url);
var json = response.getContentText("UTF-8");
var data = JSON.parse(json);
var z = data.msgArray[0].z;
var a = data.msgArray[0].a;
var u = data.msgArray[0].u;
var ret;
if(z > '0')
ret = parseFloat(z).toFixed(2);
else if(a > '0')
ret = parseFloat(a).toFixed(2);
else //漲停價
ret = parseFloat(u).toFixed(2);
return ret;
}
圖二:
3.回到google 試算表 找到要拿到即時上市或上櫃股價的儲存格,填入
=IFERROR(TSEPRICE(D2),OTCPRICE(D2))
記得把D2換成你輸入股票代碼的地方(我是放在D2)如下圖三
圖三:
只要以上三個步驟就完工了,我是連原本上市的個股一律都用台灣證券交易所的即時資料,會比GOOGLEFINANCE()還來得即時,若是日後還有問題,歡迎留言討論喔!
Comments
Post a Comment