Python返回#DIV / 0!来自Google表格而不是公式结果

时间:2019-02-22 17:05:56

标签: python google-sheets formula return-value

我正在使用python脚本来检索和使用Google表格中的数据。到目前为止,我可以顺利登录并读取/写入单元格数据。

但是,就某些包含公式的单元格而言,python返回的值为#DIV/0 !,而不是我在电子表格本身的单元格中看到的结果。

那是为什么?我试图将“ Value Render Option”参数指定为FORMATTED_VALUEUNFORMATTED_VALUEFORMULA,但是没有任何效果。

例如,一个单元格包含一个IF公式,该公式在工作表本身中显示为“正”或“负”。我希望python检索此值。相反,当我打印出这些值时,它会得到#DIV/0!。我在工作表本身中进行的计算也是如此(当我在线查看工作表时会产生正确的结果)。

我的脚本类似于Google教程页面上的示例。

感谢您的帮助!干杯!

这是脚本:

from __future__ import print_function
from pprint import pprint
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient import discovery
import pickle

SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']

spreadsheet_id = '1-V95KxzJCPglRa90KnvnHBvY2doffeAxuRrEBEA0mHg'

range_ = 'Finance_3!A1:D30'
credentials = None

if os.path.exists('token.pickle'):
    with open('token.pickle', 'rb') as token:
        credentials = pickle.load(token)

service = discovery.build('sheets', 'v4', credentials=credentials)

value_render_option = 'FORMATTED_VALUE' 

date_time_render_option = 'FORMATTED_STRING' 

request = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range_, valueRenderOption=value_render_option, dateTimeRenderOption=date_time_render_option)
response = request.execute()

pprint(response)

1 个答案:

答案 0 :(得分:0)

似乎我找到了原因。代码没有错,我在不同的电子表格上进行了测试。

当尝试获取或以其他方式使用GOOGLEFINANCE历史价格数据时,提供的值为NONE(或NULL)。这就是导致DIV / 0问题的原因。即使您的公式基于的是基于历史价格的公式,也仍然无效。

不过,返回的“实时”价格还不错。.仅不支持历史价格。

关于价格历史记录,我现在使用Alpha Vantage。在python上工作正常。

干杯!