Zac*_*cic 3 google-sheets google-apps-script
我正在尝试为我的投资制作一个股票投资组合跟踪器。我已经了解如何使用谷歌金融,但价格延迟 20 分钟是一个拖累。我已将工作表的重新计算更新为更改时和每分钟,但仍然会发生延迟。所以我真正的问题是,我是否以及如何将纳斯达克的股票价格提取到谷歌表格中以获得更实时的感觉。
您可以尝试使用脚本并每分钟触发一次。
我尝试从纳斯达克获取数据,但时间太长。我使用了《华尔街日报》,但问题是由于我无法指出的事情,它会随机出错。因此,我添加了一列来标识数据上次更新的时间。不过不用担心,它将在下次运行中更新。
function getPrice() {
var sheet = SpreadsheetApp.getActiveSheet();
// tickers will be checked on column A starting 2nd row
var values = sheet.getRange("A2:A" + sheet.getLastRow()).getValues().flat();
sheet.getRange("A1:C1").setValues([["Tickers", "Price", "Last Updated"]]);
values.forEach(function (ticker, index){
var url = "https://www.wsj.com/market-data/quotes/" + ticker;
Utilities.sleep(2000);
var html = UrlFetchApp.fetch(url).getContentText();
Utilities.sleep(2000);
var price = html.match(/quote_val">([\d ,.]+)/);
// since it randomly errors out on [1], check if price is null
// add date and time too on column C to confirm when was the data last updated
if(price){
sheet.getRange(index + 2, 2).setValue(price[1].trim());
sheet.getRange(index + 2, 3).setValue(new Date());
}
});
// call to remove existing triggers and create another one
createTrigger();
}
function createTrigger(){
// Delete all existing triggers before creating one
// Ensuring none will exist before creating trigger.
var triggers = ScriptApp.getProjectTriggers();
triggers.forEach(function (trigger){
ScriptApp.deleteTrigger(trigger);
});
// Create trigger after every run which is per minute
ScriptApp.newTrigger('getPrice')
.timeBased()
.after(60 * 1000)
.create();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1064 次 |
最近记录: |