【发布时间】:2019-02-22 17:05:56
【问题描述】:
我正在编写一个 python 脚本来检索和处理来自 Google 表格的数据。到目前为止,我可以毫无问题地登录并读取/写入单元格数据。
但是,就某些包含公式的单元格而言,python 返回的值是#DIV/0!,而不是我在电子表格本身的单元格中看到的结果。
这是为什么呢?我尝试将“值渲染选项”参数指定为FORMATTED_VALUE、UNFORMATTED_VALUE 或FORMULA,但没有任何效果。
例如,一个单元格包含一个 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