You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Google Sheets中的getStockQuote()函数每5分钟更新数值?

解决Google Sheets自定义函数getStockQuote()无法自动刷新的问题

问题原因

Google Sheets的单元格自定义函数(即直接通过=函数名()调用的方式)会默认缓存计算结果,即使请求头里加了no-cache也无法绕过这个机制,所以只会执行一次就不再更新。你之前尝试的时间触发器无效,是因为原函数仅返回值,触发器执行它时不会主动将结果写入单元格。

解决方案一:改用触发器+主动写入单元格(推荐)

修改函数逻辑,让它主动将获取到的股票报价写入指定单元格,再配合时间触发器实现每5分钟更新:

function getStockQuoteAndUpdate() {
  var url = 'SOME STOCK API SERVER';
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    headers: {
        "Cache-Control": "no-cache"
      },
    'payload' : JSON.stringify({"columns":["QUOTE"],"ignore_unknown_fields":false,"symbols":{"query":{"types":[]},"tickers":["SPY"]}})
  }

  var response = UrlFetchApp.fetch(url, options);
  var quote = JSON.parse(response).data[0].d[0];
  
  // 修改Sheet名称和单元格位置,指定要写入的目标
  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  targetSheet.getRange('A1').setValue(quote);
}

设置时间触发器步骤:

  1. 打开Google Sheets,点击顶部菜单栏「扩展程序」→「Apps Script」进入脚本编辑器
  2. 点击左侧面板的时钟图标(触发器)
  3. 点击「添加触发器」,按以下配置:
    • 选择运行的函数:getStockQuoteAndUpdate
    • 事件源:时间驱动
    • 时间类型:分钟计时器
    • 间隔:每5分钟
  4. 点击「保存」,按提示完成权限授权即可。

解决方案二:通过参数规避自定义函数缓存(不推荐,易触发API限制)

如果坚持要用单元格函数调用的方式,可以给函数加一个无意义的动态参数,让Sheets认为每次调用都是新请求,从而绕过缓存:

function getStockQuote(forceRefresh) {
  var url = 'SOME STOCK API SERVER';
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    headers: {
        "Cache-Control": "no-cache"
      },
    'payload' : JSON.stringify({"columns":["QUOTE"],"ignore_unknown_fields":false,"symbols":{"query":{"types":[]},"tickers":["SPY"]}})
  }

  var response = UrlFetchApp.fetch(url, options);
  return JSON.parse(response).data[0].d[0];
}

在单元格中调用时使用:=getStockQuote(NOW()),NOW()会实时返回当前时间,让函数每次都重新执行。但这种方式会在Sheets每次重算时都请求API,容易触发API调用频率限制,不适合高频刷新场景。

内容的提问来源于stack exchange,提问作者kensplanet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:52:53