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

使用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,” VOLUME “)

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

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

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

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

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

22 Comments

  1. 非常實用,感謝。

  2. 國眾(5410)是上櫃的,目前Google Finance只能查到上市的。

  3. 想請問 用Google試算表 填入=GOOGLEFINANCE(“tpe:5410″,”price”) 查詢股價
    卻無法顯示股價 有其他方法查詢此股價嗎 謝謝

  4. 我很早以前有透過google sheet的指令碼編輯器去台灣證交所撈股票中文名稱,但是後來它們關閉了這個API不想給人撈了。
    所以最後我是做了一張總表含上市上櫃所有的股票名稱等相關資訊,然後再用vlookup的方式來找股票中文名
    缺點是如果有新股票上市上櫃要自己維護,優點是速度很快。
    但是因為我不常關注剛上市上櫃的股票,所以除非我發現我要記錄的股票沒有我才會去查資料加進去。

  5. 想請問一下 如果我想製作股票自動報價系統
    A2輸入股票代號 B2我希望能自動帶出股票名稱

    請問怎麼用,方便指導一下嗎

  6. 請問要如何抓網頁上股息資料??

  7. =Googlefiance(B2) 這次有寫錯 ~ 謝謝 GOOGLEFINANCE

  8. 玩股網有時候會需要先建立Session才有辦法送資料,如果一直爬不到資料用同一個瀏覽器分頁去https://m.wantgoo.com瀏覽一下建立個Session,資料量等一些時間應該就會出來了。像我因為不只抓股價,所以通常我就開起來放著,他慢慢就會抓回了。

  9. 您好 上櫃的 還是顯示不出來 請問是程式碼寫錯了嬤
    =IF(A2″”,IFERROR(Googlefinance(B2)),IFERROR(ARRAY_CONSTRAIN(importXML(CONCATENATE(“http://m.wantgoo.com/s/”,A2,”//*/div[2]/div/div[1]/text()”),1,1),””)))

  10. 他們前陣子有改網頁,還好變動不大
    =IFERROR(ARRAY_CONSTRAIN(importXML(CONCATENATE(“http://m.wantgoo.com/s/”,2002),”//*/div[2]/div/div[1]/text()”),1,1),””)
    你在修改一下,我同步把之前的回覆改過。

  11. NEO大你好,我之前用玩股網抓現價都好好的,不過最近現價變成了以下訊息,請教如何修改。
    “即時行情還原權息法人動態資券變化主力進出大戶籌碼財報股利基本資料相關新聞”
    感謝

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

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

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

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

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

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

  18. =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方式來解析股票名稱。
    只是如果有新股票上市比較辛苦要自己新增,不過好處是速度很快。

  19. 謝謝分享 指令碼可以給文字嗎?

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

  21. 謝謝你的分享.

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

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

發表迴響

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