Python возвращает # DIV / 0!из Google Sheets вместо результата формулы - PullRequest
0 голосов
/ 22 февраля 2019

Я работаю над сценарием Python для извлечения и работы с данными из Google Sheets.Пока что я могу войти без проблем и читать / записывать данные ячейки.

Однако, что касается некоторых ячеек, содержащих формулы, значение, возвращаемое Python, равно #DIV/0 !, вместо результата Iувидеть в ячейке самой таблицы.

Почему это?Я попытался указать параметр «Value Render Option» как 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)

1 Ответ

0 голосов
/ 24 февраля 2019

Похоже, я выяснил причину.В коде нет ничего плохого, я тестировал его на разных таблицах.

При попытке получить или иным образом работать с историческими ценовыми данными GOOGLEFINANCE, указывается значение NONE (или NULL).Вот что вызывает проблему с DIV / 0.Даже если ваша формула основана на формуле, основанной на исторической цене, она все равно не работает.

Цена в реальном времени возвращается очень хорошо, хотя ... Это только историческая цена, которая не поддерживается.

Для истории цен я сейчас использую Alpha Vantage.Прекрасно работает с питоном.

Ура!

...