谷歌财经股票价格的替代品

Zac*_*cic 3 google-sheets google-apps-script

我正在尝试为我的投资制作一个股票投资组合跟踪器。我已经了解如何使用谷歌金融,但价格延迟 20 分钟是一个拖累。我已将工作表的重新计算更新为更改时和每分钟,但仍然会发生延迟。所以我真正的问题是,我是否以及如何将纳斯达克的股票价格提取到谷歌表格中以获得更实时的感觉。

Nig*_*Eye 5

您可以尝试使用脚本并每分钟触发一次。

我尝试从纳斯达克获取数据,但时间太长。我使用了《华尔街日报》,但问题是由于我无法指出的事情,它会随机出错。因此,我添加了一列来标识数据上次更新的时间。不过不用担心,它将在下次运行中更新。

代码:

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)

示例输出:

样本输出

笔记:

  • 一天有 1440 分钟,Url Fetch 调用的配额是每天 20000 个,因此您最多只能拥有 13 个代码,因为当您达到配额时,它将不会按预期运行。如果您想要更多的行情,您需要调整频率。(例如,每 2 分钟更新一次,您最多可以拥有 27 个股票代码)

资源: