我的谷歌电子表格正在使用GOOGLEFINANCE('symbol','price)
函数来检索我的投资组合的股票价格。不幸的是,我现在必须手动刷新。如何使电子表格每 1 分钟刷新一次?
谢谢您的帮助。
我的谷歌电子表格正在使用GOOGLEFINANCE('symbol','price)
函数来检索我的投资组合的股票价格。不幸的是,我现在必须手动刷新。如何使电子表格每 1 分钟刷新一次?
谢谢您的帮助。
根据文档,如果您使用的是新的 Google 表格,这就是您需要做的一切:
在文件 > 电子表格设置中将电子表格中的重新计算设置更改为“每分钟更改一次”。
这将使整个工作表在服务器端每分钟更新一次,无论您的浏览器中是否有电子表格。
如果您使用的是旧版 Google 表格,则需要使用此公式添加一个单元格以实现相同的功能:
=GoogleClock()
编辑以包括新旧 Google 表格并更改为=GoogleClock()
.
如果您只是在寻找该GOOGLEFINANCE
功能的刷新率,请记住数据延迟可能长达 20 分钟(根据 Google 财经免责声明)。
GoogleClock
)这是刷新操作的修改版本,考虑到数据延迟,以节省非生产性刷新周期。
=GoogleClock(GOOGLEFINANCE(symbol,"datadelay"))
例如,使用:
然后
=GoogleClock(GOOGLEFINANCE("GOOG","datadelay"))
导致基于动态数据的刷新率:
=GoogleClock(15)
GoogleClock
)如果您的工作表包含多行符号,您可以datadelay
为每个符号添加一列并使用最小值,例如:
=GoogleClock(MIN(dataDelayValuesNamedRange))
其中dataDelayValuesNamedRange
是包含每个符号的数据延迟值的单元格范围的绝对引用或命名引用(假设这些值不同)。
GoogleClock()
该GoogleClock()
功能在 2014 年被删除,并被用于刷新工作表的设置取代。目前,我已经确认替换设置仅在从桌面浏览器访问时才可在表格中使用,而不是移动应用程序(我正在使用 Google 的移动表格应用程序更新于 2016 年 3 月 14 日)。
(这部分答案基于谷歌文档帮助,部分内容来自谷歌文档帮助)
要更改“某些”Google 表格功能的更新频率:
注意外部数据函数按以下时间间隔重新计算:
前面部分中对datadelay
属性的显示和使用的引用以及更有效的工作表编码的概念仍然适用。
积极的一面是,无论您是否加载了工作表,Google 服务器都会继续刷新新的刷新选项。这肯定对共享工作表有利;对于 Google Apps 脚本 (GAS) 更是如此,其中 GAS 用于工作流代码或引用的数据用作事件的触发器。
[*] 到目前为止我的理解(我目前正在测试这个)
GOOGLEFINANCE 可能会延迟 20 分钟,因此每分钟刷新一次并没有真正的帮助。
您可以使用不同的来源,而不是 GOOGLEFINANCE。我正在使用实时股票价格(我尝试了几个,但这是迄今为止最容易实现的。他们有返回 JSON { Name: CurrentPrice }
这是您可以在 Google 表格中使用的小脚本(工具->脚本编辑器)
function GetStocksPrice() {
var url = 'https://financialmodelingprep.com/api/v3/stock/real-time-
price/AVP,BAC,CHK,CY,GE,GPRO,HIMX,IMGN,MFG,NIO,NMR,SSSS,UCTT,UMC,ZNGA';
var response = UrlFetchApp.fetch(url);
// convert json string to json object
var jsonSignal = JSON.parse(response);
// define an array of all the object keys
var headerRow = Object.keys(jsonSignal);
// define an array of all the object values
var values = headerRow.map(function(key){ return jsonSignal[key]});
var data = values[0];
// get sheet by ID -
// you can get the sheet unqiue ID from the your current sheet url
var jsonSheet = SpreadsheetApp.openById("Your Sheet UniqueID");
//var name = jsonSheet.getName();
var sheet = jsonSheet.getSheetByName('Sheet1');
// the column to put the data in -> Y
var letter = "F";
// start from line
var index = 4;
data.forEach(function( row, index2 ) {
var keys = Object.keys(row);
var value2 = row[keys[1]];
// set value loction
var cellXY = letter + index;
sheet.getRange(cellXY).setValue(value2);
index = index + 1;
});
}
现在您需要添加一个每分钟执行一次的触发器。
还有你的套装:)
在任何单元格中使用 now()。然后将该单元格用作函数中的“虚拟”参数。当 now() 每分钟更改一次时,公式会重新计算。示例: someFunction(a1,b1,c1) * (cell with now() / cell with now())
我在加密更新方面遇到了类似的问题。解决这个问题的一个笨拙的技巧是在单元格公式的末尾包含一个“+ now() - now()”特技,上面的设置每分钟重新计算一次。这适用于我的价格更新,但绝对是一个丑陋的黑客。