使用Google試算表來自動抓股價

最近在因緣際會在研究股票,總想用一張表來可以看到自己股票投資的全貌。一開始想用微軟的Excel,但是一個檔案帶來帶去想要跨平台也不是很方便腦筋就動到Google試算表,開始研究之後,發現它的功能驚為天人,搭配Google自家提供的Google Finance服務,針對台股”上市”的股票能很穩定抓到及時股價跟一些數值(截至目前上櫃無法經由Googlefinance,只能從網站上爬蟲了。),甚至連歷史股價都可一併Load進來,而且是自動的。當然搭配圖表,真的就更方便了。重點是跨平台。
Android(Google試算表)
iOS(Google試算表)
Windows(Chrome瀏覽器)
通通都可以使用。

以1215卜蜂為例

股票代號要自己打進去,後面的是通通自己帶出來了

先用B欄做國際代碼轉換,自動加上TPE:,合併起來就會變成TPE:1215
因為GoogleFinance他可以查詢國際股市的資料,台股必須加上在代碼前面加上TPE:才能正常查到資料。至於前面的A2<>””是因為我不看到沒輸入資料的儲存格變成#N/A,很難看。

中文名稱,這沒辦法靠GoogleFinance了,畢竟人家只有英文資料。這是用API的方式去證交所撈資料的。到工具>指令碼編輯器

把指令碼貼進去。裡面本來有的兩行字可以清掉。

然後在儲存格裡面打=TWNAME(A2),他就會透過API去證交所抓這支股票的中文名稱。

最重要的現價,其實打=Googlefiance(B2),即可,但是他偶爾(非常非常低的機率)會失靈,所以我必須有備用來源,這部分我不另外敘述了。

開盤價=Googlefinance(B2,”PRICEOPEN”)

昨天收盤價=Googlefinance(B2,”CLOSEYEST”)

當日最高=Googlefinance(B2,”HIGH”)

當日最低=Googlefinance(B2,”LOW”)

當日交易量=Googlefinance(B2,”LOW”)

想抓歷史紀錄更方便,再現價的後面帶入指定區間。我這裡抓一整年的=GOOGLEFINANCE(“TPE:”&G1,”price”,TODAY()-365,TODAY())
從今天起往回推365天。G1指的是指定儲存格資料。

抓回來就可以自己畫圖了,多方便而且是全自動的。

預設Google試算表不會自動更新,修改一下試算表自動計算的設定就可以了,他可以設定每分鐘或每小時自動更新。

只要這份試算表有開著,他就會自動抓取資料和計算。

剩下的可以上官網參閱!連結(另開視窗)

Please follow and like us:

10 comments / Add your comment below

  1. Google Finance沒有台灣股票上櫃的資料
    只能用爬網頁的方式,沒有特別放這篇文章裡面只擔心會被網站改資料之後,就變得更難爬到資料了。
    既然有人問,留給您下面這一串,我想您應該看得懂。股票代碼自己改過。
    =IFERROR(ARRAY_CONSTRAIN(importXML(CONCATENATE(“http://m.wantgoo.com/s/”,2002),”//*/div[2]/div/div[1]”),1,1),””)
    因為這部分會跟玩股網建立Session,所以建議你要開始抓之前先用網頁開一下玩股網,建立了Session比較容易抓到。
    如果您要抓到股票很多,有可能一時間不會全部抓到,那麼就放著等它自動更新就會慢慢補齊了。

  2. 檔案 > 試算表設定 > 計算 > 重新計算改成每分鐘。

  3. 上市股價可以抓到資料,但上櫃股價一直抓不到資料?可有什麼方法解決?

  4. 如何設定自動更新資科?試算表自動計算的設定從哪來設定呢?

  5. 不客氣喔!下次有空我再來分享他可以畫K線圖。

  6. 在下已經使用試算表抓股價7年多,但是都是一筆一筆笨笨的打語法,看過您的方式後,現在更好應用,大感謝

  7. =GOOGLEFINANCE(“TPE:2633”)
    例如上面可以呈現高鐵現價(可能會影延遲時間)
    詳細一點可以看一下Google官方說明
    https://support.google.com/docs/answer/3093281?hl=zh-Hant

    如果你說得是抓取股票名稱的

    1
    2
    3
    4
    5
    6
    7
    function TWNAME(code) {
      var url = "http://mis.tse.com.tw/stock/api/getStock.jsp?ch=" + code + ".tw&json=1&_=";
      var response = UrlFetchApp.fetch(url);
      var json = response.getContentText("UTF-8");
      var data = JSON.parse(json);
      return data.msgArray[0].n;
    }

    但是我發現最近台灣證交所有時候可能因為不明原因,網站會拒絕回應,所以我後來乾脆把整個股票代碼和名稱都拉一份下來到試算表裡面利用Vlookup方式來解析股票名稱。
    只是如果有新股票上市比較辛苦要自己新增,不過好處是速度很快。

  8. 抓歷史資料貌似都會只抓到前一天收盤價,我通常會多帶一格今天現在的價格在最後面方便畫圖。

  9. 謝謝你的分享.

    我嘗試用以下的語法抓取資料, 但總是欠缺最近一天的資料, 請問有沒有方法解決?

    =GOOGLEFINANCE(“0700″,”all”,TODAY()-100,TODAY())

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料