2025年5月24日 星期六

Google教學:使用IMPORTDATA匯入臺灣證券交易所三大法人買賣超日報



今天我們要來學習如何在Google試算表中使用IMPORTDATA函數,從臺灣證券交易所(TWSE)抓取三大法人的每日買賣超資料。這對於需要追蹤市場動向或進行數據分析的朋友來說非常實用。

本篇重點:

  1. 瞭解資料來源:臺灣證券交易所三大法人買賣超頁面。

  2. IMPORTDATA函數的基本用法。

  3. 如何取得TWSE三大法人買賣超資料的CSV下載連結。

  4. 在Google試算表中實際操作匯入資料。

  5. 如何匯入不同日期或不同產業分類的資料。

1. 資料來源

首先,我們要知道資料的來源。臺灣證券交易所提供了三大法人買賣超日報的頁面:
https://www.twse.com.tw/zh/trading/foreign/t86.html

這個頁面預設會顯示某一特定產業(影片中範例為「水泥工業」)的資料,並且可以選擇不同的日期和產業分類。

2. 

Google試算表中的IMPORTDATA函數可以從指定的URL匯入.csv(逗號分隔值)或.tsv(tab 分隔值)格式的資料。
它的基本語法是:IMPORTDATA(url)

更多關於IMPORTDATA的官方說明,可以參考:
https://support.google.com/docs/answer/3093335?hl=zh-Hant

3. 取得CSV下載連結的技巧

在TWSE的資料頁面上,雖然有「CSV下載」按鈕,但直接點擊它會立即下載檔案,我們無法直接看到下載連結的URL。

關鍵技巧如下:

  • 在TWSE頁面上,點擊「CSV下載」按鈕旁邊的**「列印/HTML」**按鈕。

  • 這會在新分頁中開啟一個HTML格式的報表,網址列會顯示該報表的URL。例如,預設情況下(水泥工業),URL可能像這樣:
    https://www.twse.com.tw/rwd/zh/fund/T86?response=html
    (注意:實際URL可能因選擇的日期或分類而包含更多參數,例如 date=YYYYMMDD 和 selectType=代碼)。

  • 我們需要將這個URL末尾的 response=html 修改為 response=csv。修改後的URL就會是CSV資料的直接下載連結。

4. 在Google試算表中匯入資料

現在,讓我們在Google試算表中實際操作:

  1. 打開一個新的Google試算表。

  2. 假設我們要抓取預設的「水泥工業」最新資料,在任何一個儲存格(例如A2,保留A1給日期或標題)中,輸入以下公式:
    =IMPORTDATA("https://www.twse.com.tw/rwd/zh/fund/T86?response=csv")
    試算表就會自動載入「水泥工業」的最新買賣超資料。

5. 匯入不同日期或產業分類的資料

TWSE頁面允許我們查詢不同產業分類或「全部(不含權證、牛熊證、可展延牛熊證)」的資料。當我們在網頁上選擇不同條件並查詢後,再點擊「列印/HTML」,其URL就會包含相應的參數。

  • 範例1:匯入「全部(不含權證...)」資料
    假設我們要查詢2025年05月23日的「全部(不含權證、牛熊證、可展延牛熊證)」資料,透過上述技巧得到的HTML頁面URL可能包含 date=20250523 和 selectType=ALLBUT0999 等參數。將其 response 改為 csv 後,URL會像這樣:
    https://www.twse.com.tw/rwd/zh/fund/T86?date=20250523&selectType=ALLBUT0999&response=csv
    在試算表中輸入:
    =IMPORTDATA("https://www.twse.com.tw/rwd/zh/fund/T86?date=20250523&selectType=ALLBUT0999&response=csv")

  • 範例2:匯入「金融保險」資料
    假設「金融保險」的 selectType 代碼是 17,要查詢2025年05月21日的資料,CSV URL會是:
    https://www.twse.com.tw/rwd/zh/fund/T86?date=20250521&selectType=17&response=csv
    在試算表中輸入:
    =IMPORTDATA("https://www.twse.com.tw/rwd/zh/fund/T86?date=20250521&selectType=17&response=csv")

  • 動態日期設定:
    若要讓日期動態化,可以在試算表的某個儲存格(例如A1)輸入日期(格式為YYYYMMDD,例如 20250523),然後用 & 符號來組合URL:
    =IMPORTDATA("https://www.twse.com.tw/rwd/zh/fund/T86?date=" & A1 & "&selectType=ALLBUT0999&response=csv")
    重要提示: IMPORTDATA 函數內的URL不支援直接使用如 NOW()RAND() 或 TEXT(NOW()-1,"yyyymmdd") 等會即時變動的函數來產生日期字串。日期參數必須是固定的字串,或來自儲存格的固定值。

  • 抓取最新資料:
    如果想要抓取最新的資料(通常是最近一個交易日),可以省略 date 參數。系統會自動提供最新資料。例如,抓取最新的「全部(不含權證...)」資料:
    =IMPORTDATA("https://www.twse.com.tw/rwd/zh/fund/T86?selectType=ALLBUT0999&response=csv")

  • 查詢產業分類代碼:
    如果想知道其他產業分類的 selectType 代碼,可以在TWSE網頁上,對著產業分類的下拉選單按右鍵,選擇「檢查」(Inspect Element)。在瀏覽器的開發者工具中,展開 <select> 標籤,查看裡面的 <option> 標籤,其 value 屬性即為對應的代碼(例如金融保險的 value="17")。

結論

透過以上步驟,我們就能輕鬆地使用Google試算表的IMPORTDATA函數,自動化地抓取臺灣證券交易所的三大法人買賣超日報資料。這不僅省去了手動下載和整理的麻煩,也方便我們進行後續的數據分析與追蹤。



沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

Google Sheets 教學:輕鬆將表單多選結果拆分成多筆資料 (FLATTEN, SPLIT, QUERY 組合應用)

前言 您是否也曾遇過這樣的困擾?當您使用 Google 表單的「核取方塊」讓使用者進行多重選擇後,收集到的回覆在 Google Sheets 中會將所有選項擠在同一個儲存格裡,並用逗號隔開。例如,一個訂單表單中,客戶可能在「購買口味」欄位中一次選擇了「原味, 粉光, 人蔘」。 這...