使用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()
步骤会重现问题吗?
预期输出: 预期的输出是数字,但API却返回“#N / A(在VLOOKUP评估中未找到值'43531'。)”。电子表格本身可以正确计算公式,但是API返回#N / A
通过执行以下链接,您可以在API Explorer上轻松重现该问题: Google Sheets API Explorer
答案 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函数时,请记住这一点。