Sheets API v4针对特定公式返回#N / A

时间:2019-03-15 19:01:07

标签: google-sheets google-sheets-api google-finance

使用vlookup公式时,Sheets API v4返回#N / A。 vlookup公式会发生这种特定的错误,但是我已经在包含大量公式的电子表格中看到了同样的问题。似乎API不会在返回值之前等待电子表格计算公式。

Python中的一个小代码示例:

service.spreadsheets().values().get(
    spreadsheetId='1s-fePyrjzp8_jAWy-p1smystgJXxMirmjXGJjQM91qg',
    range="FxRates salaries filter!A1:D5",
    valueRenderOption="UNFORMATTED_VALUE",
    dateTimeRenderOption="SERIAL_NUMBER"
).execute()

步骤会重现问题吗?

  1. 在Google电子表格上创建vlookup公式
  2. 使用Sheets API获取公式的结果

预期输出: 预期的输出是数字,但API却返回“#N / A(在VLOOKUP评估中未找到值'43531'。)”。电子表格本身可以正确计算公式,但是API返回#N / A

通过执行以下链接,您可以在API Explorer上轻松重现该问题: Google Sheets API Explorer

1 个答案:

答案 0 :(得分:2)

当我检查FxRates salaries filter!A1:D5的公式时,检索到以下值。

{
  "range": "'FxRates salaries filter'!A1:D5",
  "majorDimension": "ROWS",
  "values": [
    [
      "Date",
      "EUR",
      "USD",
      "BRL"
    ],
    [
      "=TODAY()-1",
      1,
      "=vlookup(A2,EURUSD_D!$A:$C,3,0)",
      "=vlookup(A2,EURBRL_D!$A:$C,3,0)"
    ]
  ]
}

当我检查EURUSD_D!$A:$C的公式时,检索到以下值。 GOOGLEFINANCE()检索到的值正在使用。另外,EURBRL_D!$A:$C的值是相同的结果。

{
  "range": "EURUSD_D!A1:C2258",
  "majorDimension": "ROWS",
  "values": [
    [
      "Date ONLY",
      "=GOOGLEFINANCE(\"CURRENCY:EURUSD\",\"price\",date(2014,1,2),today())"
    ],
    [
      "=ARRAYFORMULA(IF(B2:B=\"\",\"\",DATE(YEAR(B2:B),MONTH(B2:B),DAY(B2:B))))"
    ]
  ]
}

从上述结果来看,您认为问题的原因是由于“ Historical GOOGLEFINANCE data no longer accessible outside of Google Sheets”。

  

Google表格以外的历史GOOGLEFINANCE数据不再可用

     

2016年9月27日

     

我们希望让您知道GOOGLEFINANCE功能的微小变化,该功能使将当前或历史证券信息直接提取到Google表格中的电子表格中变得容易。从今天开始,将无法使用Apps脚本或API在Sheets外部下载历史数据或访问历史数据。如果您有一个包含GOOGLEFINANCE函数生成的历史数据的电子表格,并且尝试下载或通过Apps脚本或API访问它,则相应的单元格将显示“#N / A”。您仍然可以查看该历史记录数据从Sheets应用程序中获取,您仍然可以通过Apps脚本或API下载当前数据并访问当前数据。以后使用GOOGLEFINANCE函数时,请记住这一点。