作者aldosterone (希望邻居养猫咪)
看板Foreign_Inv
标题Re: [请益] =GOOGLEFINANCE(" ", "price")
时间Mon Oct 10 14:28:57 2022
若有以下顾虑:
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://webptt.com/cn.aspx?n=bbs/Foreign_Inv/M.1665383341.A.BA8.html
1F:推 XDDDpupu5566: 推一个 10/10 14:52
2F:推 alalal: 感谢分享 10/10 16:10
3F:推 ivan1116: 推喔 不过还没试试看XD 10/10 17:04
4F:推 whmclschuhw: 感谢 mark起来 10/10 18:47
5F:→ heavenbeyond: 有办法赚到股票目前的殖利率吗? 10/10 21:52
6F:→ aldosterone: 网页内容基本上都可以截取 10/10 23:32
7F:推 baconone: 不推不行 10/11 06:29
8F:推 TranquilityO: 想问原po新浪财经的要怎麽改,股价只抓到@now@ 10/11 17:41
抓不到的部分可以用这样的方式处理:
'''
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
9F:推 TranquilityO: 成功了感谢原po 10/12 14:40
10F:推 suiam74: 太强了 10/18 10:07