【发布时间】:2019-11-26 10:52:30
【问题描述】:
我的谷歌电子表格正在使用该功能:
=GOOGLEFINANCE(TICKER,"all",DATE(yyyy/mm/dd),DATE(yyyy/mm/dd),"DAILY")
每天检索我的投资组合的股票价格。
不幸的是,它显示了一天的延迟数据,我如何在我的 Google 表格中选择当天的数据?
【问题讨论】:
标签: google-apps-script google-sheets triggers
我的谷歌电子表格正在使用该功能:
=GOOGLEFINANCE(TICKER,"all",DATE(yyyy/mm/dd),DATE(yyyy/mm/dd),"DAILY")
每天检索我的投资组合的股票价格。
不幸的是,它显示了一天的延迟数据,我如何在我的 Google 表格中选择当天的数据?
【问题讨论】:
标签: google-apps-script google-sheets triggers
您可以使用Google Apps Script 创建一个时间驱动的触发器,该触发器每天都会运行您想要的函数。在这种情况下,要创建的触发器是everyDays,提供的参数是1。
您可以使用脚本编辑器手动创建该触发器,如here 或programmatically 所示,通过使用Script service,运行如下函数:
function createDailyTrigger() {
ScriptApp.newTrigger("callGoogleFinance")
.timeBased()
.everyDays(1)
.create();
}
然后,您可以使用每天触发的函数(我将其命名为callGoogleFinance)通过在单元格中使用setFormula 并提供您的公式作为参数来调用GOOGLEFINANCE:
function callGoogleFinance() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("your-sheet-name"); // Please provide your sheet name here
var cell = sheet.getRange("your-range"); // Please provide the row and column of your cell here
cell.setFormula("=GOOGLEFINANCE(TICKER,\"all\",DATE(yyyy/mm/dd),DATE(yyyy/mm/dd)");
}
希望对你有帮助。
【讨论】:
GOOGLEFINANCE 从 Google 财经获取当前或历史证券信息。如果指定了任何日期参数,则该请求被视为历史请求。但是在您的情况下,当前日期显然不被视为历史日期。 GOOGLEFINANCE 似乎从start_date(包括start_date)获取信息,但不包括end_date。要包含 end_date,您需要添加一天。
如果 end_date 是 TODAY(),则添加一天无济于事。为确保您获得当天数据,您可以尝试添加不带日期参数的 GOOGLEFINANCE。
={
GOOGLEFINANCE("GOOG","price", TODAY()-30, GOOGLEFINANCE("GOOG", "tradetime"));
{
GOOGLEFINANCE("GOOG", "tradetime"),
GOOGLEFINANCE("GOOG", "priceopen")
} }
GOOGLEFINANCE("GOOG", "tradetime") 作为参数,是为了避免 TODAY() 是星期六或星期日时重复日期。
【讨论】: