【问题标题】:Python returns #DIV/0! from Google Sheets instead of formula resultPython 返回 #DIV/0!来自谷歌表格而不是公式结果
【发布时间】:2019-02-22 17:05:56
【问题描述】:

我正在编写一个 python 脚本来检索和处理来自 Google 表格的数据。到目前为止,我可以毫无问题地登录并读取/写入单元格数据。

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

这是为什么呢?我尝试将“值渲染选项”参数指定为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)

【问题讨论】:

  • 如果您不包含脚本,您希望其他人如何帮助您?
  • 脚本如下:
  • 你想读取什么样的数据?通常,当您要阅读股票等公式或任何与 Google DB 相关的严肃公式时,就会发生此类行为。
  • 我确实在处理股票价格数据。但是,实际价格 (=GOOGLEFINANCE(stock,”price”)) 被正确获取。但是基于上述价格的公式是行不通的。例如,平均价格的计算不起作用。或者一个 IF 公式(如果价格 > 100,例如,返回“True”或“False”)不起作用,即使它在工作表上正确显示。

标签: python google-sheets formula return-value


【解决方案1】:

看来我找到了原因。代码没有问题,我在不同的电子表格上测试过。

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

“实时”价格返回就好了。只是历史价格不受支持。

对于价格历史,我现在使用 Alpha Vantage。与 python 配合得很好。

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    相关资源
    最近更新 更多