use*_*486 15 google-finance google-sheets google-apps-script
我的谷歌电子表格正在使用GOOGLEFINANCE('symbol','price)函数来检索我的投资组合的股票价格.不幸的是,我现在必须手动刷新.如何让电子表格每1分钟刷新一次?
谢谢您的帮助.
ric*_*agy 31
根据文档,如果你使用新版Google表格,这就是你需要做的全部工作:
在文件>电子表格设置中将电子表格中的重新计算设置更改为"在更改时分钟".
这将使整个工作表在服务器端每分钟更新一次,无论您是否在浏览器中都有电子表格.
如果您使用的是旧版Google表格,则需要添加具有此公式的单元格以实现相同的功能:
=GoogleClock()
Run Code Online (Sandbox Code Playgroud)
编辑以包含新旧Google表格并更改为=GoogleClock().
GOOGLEFINANCE 可能会有 20 分钟的延迟,因此每分钟刷新一次并没有真正的帮助。
您可以使用不同的来源代替 GOOGLEFINANCE。我正在使用这个实时股票价格(我尝试了几个,但这是迄今为止最容易实现的。他们有返回 JSON { Name: CurrentPrice } 的 API
这是您可以在 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;
});
}
Run Code Online (Sandbox Code Playgroud)
现在您需要添加一个每分钟执行一次的触发器。
还有你的套装:)
小智 6
如果您只是为该GOOGLEFINANCE功能寻找刷新率,请记住,数据延迟最长可达20分钟(根据Google财经免责声明).
GoogleClock)以下是刷新操作的修改版本,考虑了数据延迟,以节省非生产性刷新周期.
=GoogleClock(GOOGLEFINANCE(symbol,"datadelay"))
Run Code Online (Sandbox Code Playgroud)
例如,用:
然后
=GoogleClock(GOOGLEFINANCE("GOOG","datadelay"))
Run Code Online (Sandbox Code Playgroud)
导致基于动态数据的刷新率:
=GoogleClock(15)
Run Code Online (Sandbox Code Playgroud)
GoogleClock)如果工作表包含多行符号,则可datadelay以为每个符号添加一列并使用最低值,例如:
=GoogleClock(MIN(dataDelayValuesNamedRange))
Run Code Online (Sandbox Code Playgroud)
其中dataDelayValuesNamedRange是绝对参考或包含对于每个符号(假设这些值是不同的)中的数据的延迟值的单元格范围的命名参考.
GoogleClock()该GoogleClock()功能于2014年被删除,取而代之的是刷新工作表的设置设置.目前,我已经确认替换设置仅在桌面浏览器中可用,而不是移动应用程序(我使用Google的移动表格应用程序更新2016-03-14).
(答案的这部分内容基于Google文档帮助,并从中复制了部分内容)
要更改"某些"Google表格功能更新的频率,请执行以下操作:
注意外部数据功能按以下间隔重新计算:
前面部分中对datadelay属性的显示和使用的引用仍然适用,以及更有效编码工作表的概念.
从积极的方面来说,无论您是否加载了工作表,Google服务器都会继续刷新新的刷新选项.这肯定对共享表格有利; 对于Google Apps脚本(GAS)更是如此,其中GAS用于工作流代码或引用的数据用作事件的触发器.
[*]在我的理解中到目前为止(我目前正在测试这个)
| 归档时间: |
|
| 查看次数: |
67879 次 |
| 最近记录: |