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

如何在Google Apps Script中为GOOGLEFINANCE结果添加除以100运算

解决方案

要实现将GOOGLEFINANCE获取的历史价格除以100(GBX转GBP),你需要修改生成公式的逻辑——因为GOOGLEFINANCE返回的是包含日期和价格的二维数组,得用ARRAYFORMULA批量处理价格列,同时保留日期列的完整性。

修改后的代码

function generateHistoricalPriceSheetForSymbol(symbol, fromDate) {
  var symbolSheet = createNewOrClearOldSheet(symbol)

  var fromDateFunction = "DATE(" + fromDate.getFullYear() + "," + (fromDate.getMonth() + 1) + "," + fromDate.getDate() + ")"
  // 修改公式:用LET缓存GOOGLEFINANCE结果,避免重复调用;仅对数据行的价格列除以100,保留表头
  var historicalPricesFormula = 'ARRAYFORMULA(LET(data, GOOGLEFINANCE("' + symbol + '", "price", ' + fromDateFunction + ', TODAY(), "DAILY"), IF(ROW(data)=1, data, {INDEX(data,,1), INDEX(data,,2)/100})))'
  symbolSheet.getRange('A1').setFormula(historicalPricesFormula)

  var fontFamily = getConfigurationByKey('Font Family')
  var dateFormat = getConfigurationByKey('Date Format')
  symbolSheet.getRange('A:A').setNumberFormat(dateFormat).setFontFamily(fontFamily)
  var numberFormat = getConfigurationByKey('Number Format')
  symbolSheet.getRange('B:B').setNumberFormat(numberFormat).setFontFamily(fontFamily)

  cleanUnusedCells(symbolSheet)
}

关键说明

  • 使用LET函数缓存GOOGLEFINANCE的查询结果,避免重复调用API,提升效率
  • 用IF(ROW(data)=1, data, ...)判断表头行,确保第一行的"Price"表头不会被除以100
  • 通过{INDEX(data,,1), INDEX(data,,2)/100}拆分数组:保留第一列(日期)不变,第二列(价格)除以100后重新组合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:20:44