Re: [請益] =GOOGLEFINANCE(" ", "price")

看板Foreign_Inv作者 (希望鄰居養貓咪)時間1年前 (2022/10/10 14:29), 1年前編輯推噓7(702)
留言9則, 8人參與, 1年前最新討論串2/2 (看更多)
若有以下顧慮: 1.'GOOGLEFINANCE' 擔心延遲 2.'IMPORTHTML' 只能 return table or list 3.'IMPORTXML' 的 'xpath_query' 不好寫 4.'IMPORTHTML' 和 'IMPORTXML' 有更新延遲的問題 可以嘗試用主欄目下 'Extensions' > 'Apps Script' 來撰寫腳本,達成: 1. 網頁抓取數值 2. 即時更新 # 網頁抓取數值 ''' function get_prc(url) { var response = UrlFetchApp.fetch(url); content = response.getContentText(); var str = content.split("\n"); var key_lst = 'id="last_last" dir="ltr">'; var key_bid = '-bid">'; var key_ask = '-ask">'; var key_end = '<'; var prc = []; var slc; for (var i = 0; i < str.length; i++) { if (str[i].includes(key_lst)) { slc = str[i]; var pnt_sta_lst = slc.indexOf(key_lst) + key_lst.length; var pnt_end_lst = slc.indexOf(key_end, pnt_sta_lst); prc.push(parseFloat(slc.slice(pnt_sta_lst, pnt_end_lst))); } else if (str[i].includes(key_bid)) { slc = str[i]; var pnt_sta_bid = slc.indexOf(key_bid) + key_bid.length; var pnt_end_bid = slc.indexOf(key_end, pnt_sta_bid); var pnt_sta_ask = slc.indexOf(key_ask) + key_ask.length; var pnt_end_ask = slc.indexOf(key_end, pnt_sta_ask); prc.push(parseFloat(slc.slice(pnt_sta_bid, pnt_end_bid))); prc.push(parseFloat(slc.slice(pnt_sta_ask, pnt_end_ask))); break; } } return [prc]; } ''' # 即時更新 ''' function upd_rng(rng) { var fml = rng.getFormulas(); rng.setValue(""); SpreadsheetApp.flush(); rng.setFormulas(fml); } function upd_prc() { var sht = SpreadsheetApp.getActiveSheet(); upd_rng(sht.getRange("C2:C4")); upd_rng(sht.getRange("I2")); } ''' # 即時更新(的 UI) ''' function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Update', 'upd_prc') .addToUi(); } ''' 呼叫邏輯的關係,定義(貼上 code)的順序要是: 'onOpen' > 'upd_rng' > 'upd_prc' > 'get_prc' range (比如 "C2:C4") 由個人的試算表編排決定。 --- sheets 範例連結: https://reurl.cc/KQanpq 筆記連結: https://hackmd.io/o17R_8S8QKCEQkhBVuxEwg -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.23.21 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Foreign_Inv/M.1665383341.A.BA8.html

10/10 14:52, 1年前 , 1F
推一個
10/10 14:52, 1F

10/10 16:10, 1年前 , 2F
感謝分享
10/10 16:10, 2F

10/10 17:04, 1年前 , 3F
推喔 不過還沒試試看XD
10/10 17:04, 3F

10/10 18:47, 1年前 , 4F
感謝 mark起來
10/10 18:47, 4F

10/10 21:52, 1年前 , 5F
有辦法賺到股票目前的殖利率嗎?
10/10 21:52, 5F

10/10 23:32, 1年前 , 6F
網頁內容基本上都可以截取
10/10 23:32, 6F

10/11 06:29, 1年前 , 7F
不推不行
10/11 06:29, 7F

10/11 17:41, 1年前 , 8F
想問原po新浪財經的要怎麼改,股價只抓到@now@
10/11 17:41, 8F
抓不到的部分可以用這樣的方式處理: ''' function myFunction() { var app = SpreadsheetApp; var url ="http://hq.sinajs.cn/list=lse_vwra,lse_eimi"; var options = { 'method' : 'get', 'headers' : { "Referer": "http://vip.stock.finance.sina.com.cn" } }; var response = UrlFetchApp.fetch(url,options); return response.getContentText("GBK"); } ''' ※ 編輯: aldosterone (140.116.253.37 臺灣), 10/12/2022 10:03:41

10/12 14:40, 1年前 , 9F
成功了感謝原po
10/12 14:40, 9F
文章代碼(AID): #1ZGxkjke (Foreign_Inv)
文章代碼(AID): #1ZGxkjke (Foreign_Inv)