谷歌表有簡單的宏來獲取美國股票和貨幣的價格,但不是黃金或白銀。這是獲取最新價格的簡單免費技巧
作者使用自定義手寫功能的Google 表格屏幕截圖。
我使用Google 表格來跟踪我的費用、資產和負債。 Google Sheet 具有一流的支持,可查詢美國交易所股票的最新價值,例如NASDAQ 或者NYSE. 另一方面,它對其他交易所的支持也不如SGX: Singapore交易所.
為了克服這個問題,我們應該運行像爬行這樣的笨拙的黑客攻擊yahoo finance 頁。
在這篇文章中,我將分享如何編寫一個AppScript 允許你從某些API 存儲庫中抓取此類信息的代碼。其中一些API 服務每月僅提供有限的API 調用——因此我們也將研究緩存方法。
我將使用以下示例
如何在Google Sheet 中獲取最新的黃金價格或如何在Google Sheet 中獲取最新的金屬價格。
這可以很容易地擴展到解決有關如何獲得印度最新黃金價格或印度股票或新加坡交易所股票最新價格的問題。
免責聲明:在本文中,我不提供任何財務建議。使用本文中提到的方法做出的任何財務決策均由每個人自行負責。合理投資
此外,我在本文中使用的示例是任意的。它們不代表任何形式的財務建議。
我不隸屬於metals-api.com。
一些現有的方法使用GOOGLEFINANCE 宏
Google表格中有一個宏,稱為=GOOGLEFINANCE(). 你可以使用它來獲取在納斯達克上市的微軟股票的最新價格=GOOGLEFINANCE(“NASDAQ:MSFT”). 這裡還有一些例子
GOOGLEFINANCE 函數支持更多選項,例如獲取具有不同屬性的給定股票在一段時間內的值。你可以在Google 支持頁面上閱讀更多相關信息。
但它有局限性,比如它不提供商品的現貨價格(截至06/05/2022)。如果更新,請分享評測。
ImportHtml 和ImportXml
ImportHtml 和ImportXml 是允許你分別爬取某個網頁或XML 的宏http/s,解析結構化數據並從中獲取一些值,如果你可以查明內容在HTML 文檔中的位置。
我如何使用它的一個例子是獲取一些的最新值Singapore交易所: SGX 上市股票。如何做到這一點的一個例子是
=IMPORTXML(“https://sg.finance.yahoo.com/quote/RW0U.SI”, “//span[@class=”Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)”]”)
這使我們能夠獲得股票的價值RWOU.SI 這是豐樹北亞商業信託(RW0U.SI)的股票代碼。
另一個例子是
=Dollar(Index(ImportHTML(“http://www.apmex.com/spotprices/silver-price”,”table”,8),2,2))
這使我們能夠獲得以美元/盎司為單位的最新白銀現貨價值。這Dollar 函數用於轉換text/decimal 直接換成美元。
過去我用它來獲取金屬/商品的價格。讓它工作很痛苦,因為你需要確定任意網站的HTML 數據中的哪個表具有你正在尋找的正確數據。花時間在這幾週後,你意識到網站決定稍微改變結構並且你的宏被破壞了。
我需要一些更強大、更容易使用的東西。這正是在哪裡AppScript 進來。
使用AppScript 獲取數據值
傑森·布里斯科(Jason Briscoe) 在Unsplash 上拍攝的照片。 Google Apps 腳本可讓你使用Google 表格做一些新奇的事情。你可以使用Apps 腳本將自定義菜單、對話框和邊欄添加到Google 表格。它還允許你為表格編寫自定義函數,並將表格與日曆、雲端硬分叉和Gmail 等其他Google 服務集成。
來源:developer.google.com — 在此處閱讀有關AppScript 的更多信息。語法與JavaScript 完全相同。
你可以通過訪問在Google 表格中創建一個新腳本Tools > Script Editor.
作者的谷歌表格截圖。
在本文中,我將使用來自metals-api.com 它提供了黃金、白銀、鉑金、銠等商品的最新現貨價格。 API 返回數據的格式為JSON 格式。
Metals-Api 有一個免費層,它允許我們每小時查詢多達50 次。這對我們大多數人來說應該可以正常工作。為了省錢——稍後我將分享我們如何在AppScript 中緩存數據以確保我們不會超過這個API 限制。
讓我們開始吧
[1] 創建一個新腳本和一個存根函數
轉到上面共享的腳本編輯器並創建一個新函數,該函數接受一些輸入並返回預期的輸出。這個新函數以後可以作為宏直接從Google 表格中調用。
保存後你會看到類似這樣的輸出
到目前為止的骨架代碼響應。作者截圖。
[2] 調用API 並返迴響應
現在讓我們更新我們的AppScript 代碼以對metal-api.com 進行API 調用。為此,你需要一個API 密鑰。為了這
在metal-api.com 註冊自己從儀表板複製API 訪問密鑰
現在讓我們更新到目前為止編寫的AppScript 以進行API 調用。將API 密鑰部分替換為你自己的密鑰。
保存後你會看到類似這樣的輸出
使用更新的腳本運行新宏的結果。作者截圖。請注意,這些值來自最初撰寫本文時的值。
[3] (可選)添加緩存支持
如上所述,我們在此示例中使用的平台每小時的免費API 調用次數有限。我希望大多數平台都能做到這一點。在這種情況下,我們可以利用AppScript 中的緩存層支持。這可能會導致數據稍微延遲(基於我們設置的緩存超時),但可能適合我們的用例。
要添加緩存更新腳本,如下所示
保存後你會看到類似這樣的輸出
使用更新的腳本運行新宏的結果。作者截圖。請注意,這些值來自最初撰寫本文時的值。
** 這僅供參考。
除了這個,你還能做什麼
你可以使用相同的方法來執行不同的操作,例如:
獲取印度特定城市的黃金價格。獲取新加坡交易所某些股票的價格。獲取一些股票的價格BSE 或者NSE. 獲取某個互惠基金的價格或ETF
如果你知道可靠的數據源或最好是API 端點,則基本上可以從互聯網上以數字格式將你想要的任何值輸入Google 表格。
資訊來源:由0x資訊編譯自DATADRIVENINVESTOR,版權歸作者Minhaz Vadakekara所有,未經許可,不得轉載