【问题标题】:How to Import Historical Data from Yahoo Finance into Google Sheets and make it Auto-Update?如何将 Yahoo Finance 中的历史数据导入 Google 表格并使其自动更新?
【发布时间】:2021-04-16 04:06:00
【问题描述】:

我一直在尝试将 Yahoo Finance ES 符号每日 OHLC 数据导入 Google 表格。

我已经通过@Rubén检查了禁用javascript并重新加载页面方法,并且在重新加载页面后会显示OHLC数据。但 IMPORT 公式返回 #N/A Resource at URL Not Found

我也尝试了 @user0 方法(保存 IMPORTJSON 方法)here 但也没有运气。

然后我测试了@JohnA 的脚本,它确实检索了数据。

这是@JohnA Script output 我收到了。

但现在我想知道如何让它至少每天自动更新(它是每日数据)。

由于@JohnA's Script 涉及处理CSV 文件,我不确定如何继续。

我已启用calculation on change and every minute,详情如下:How to Configure Auto Refresh for Googlesheets

是否有任何解决方法允许仅将数据导入 Google 表格而不需要 csv 步骤?

或者在让 Google 表格每天自动更新的同时,是否仍然可以从 CSV 中提取数据?如果是,怎么做?

感谢您的任何建议,非常感谢!

test Sheet1 and Sheet2

@Tanaike 1@Tanaike 2的相关脚本

【问题讨论】:

  • 很高兴您发现我的回答很有帮助。 Google 表格有触发器,您可以将其设置为每天在指定的时间范围内触发。
  • JohnA 的脚本适合我。如果你不能让它工作,那就是出了问题,或者你没有告诉我们一些事情
  • JohnA 的脚本将其直接复制到工作表中
  • 非常感谢@John a 的触发器建议。我以为重新计算的方法就是那个。
  • @Cooper 是的,它正在工作。但我的问题是关于让它每天更新。使用 csv 方法或其他方法。谢谢。

标签: csv google-apps-script google-sheets yahoo-finance


【解决方案1】:

在脚本编辑器中查找时钟

然后填写表格

或者,您可以通过脚本设置触发器

/**
 * Creates time-driven triggers
 *
 * https://developers.google.com/apps-script/reference/script/clock-trigger-builder
 */
function createTimeDrivenTriggers() {
  // Trigger every day at 04:00AM CT.
  ScriptApp.newTrigger('csvDaily')
      .timeBased()
      .everyDays(1)
      .atHour(4)
      .create();
}

【讨论】:

  • 非常感谢您提供的详细信息和非常好的脚本!很有价值。我弄好了看看有没有更新,明天回来。再次感谢您的大力帮助!身体健康!
  • 我今天添加了新仪器并运行脚本。昨天的数据来自昨天添加的工具。一定是由于url的固定周期数:query1.finance.yahoo.com/v7/finance/download/ES=F?period1=1618358400&period2=1618444800&interval=1d&events=history&includeAdjustedClose=true
  • 雅虎使用 Unix 时间戳。 unixtimestamp.com 假设 G10 有日期,公式为 =(G10-DATE(1970,1,1))*86400
  • 我建立了一个模型来对股票进行一些回测,如果你在一只股票上投资 x 美元,今天的价值是多少。我建立它只是为了好玩,我仍在审查结果。一个例子表明,如果您在 1980 年 IPO 开始时以 22 美元的价格购买了 100 股 AAPL 股票,那么今天的股票将超过 300 万美元。 docs.google.com/spreadsheets/d/…
  • 我可能遗漏了一些东西,但是从工作表中获取值很容易,但我更喜欢使用命名范围,这样如果你的工作表地址发生变化,你就不必更改脚本。 var ss = SpreadsheetApp.getActiveSpreadsheet(); var 符号 = ss.getRange(Data_Picker!E14).getValue();或假设您命名为 E14 OneYearURL var symbol = ss.getRange("OneYearURL").getValue();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
相关资源
最近更新 更多