Sheets API v4 возвращает # N / A для конкретных формул - PullRequest
1 голос
/ 15 марта 2019

Sheets API v4 возвращает # N / A при использовании формулы vlookup. Эта конкретная ошибка происходит с формулой 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()

Шаги воспроизведут проблему?

  1. Создание формулы vlookup в электронной таблице Google
  2. Используйте Sheets API для получения результата формулы

Ожидаемый результат: Ожидаемый результат - число, но вместо этого API возвращает «# N / A (Не найдено значение« 43531 »в оценке VLOOKUP.)». Сама электронная таблица правильно вычисляет формулу, но API возвращает # N / A

Вы можете легко воспроизвести проблему в API Explorer, перейдя по ссылке ниже: Google Sheets API Explorer

1 Ответ

2 голосов
/ 16 марта 2019

Когда я проверил, что формулы 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))))"
    ]
  ]
}

Исходя из приведенных выше результатов, считается, что причина вашей проблемы в том, что " Исторические данные GOOGLEFINANCE больше не доступны за пределами Google Sheets ".

Исторические данные GOOGLEFINANCE больше не доступны за пределами Google Sheets

27 сентября 2016 г.

Мы хотим, чтобы вы знали о небольшом изменении в функции GOOGLEFINANCE, которая позволяет легко загружать текущую или историческую информацию о ценных бумагах непосредственно в ваши электронные таблицы в Google Sheets. Начиная с сегодняшнего дня, невозможно будет загружать исторические данные или получать к ним доступ за пределами листов с помощью Apps Script или API. Если у вас есть электронная таблица с историческими данными, сгенерированными с помощью функции GOOGLEFINANCE, и вы пытаетесь загрузить ее или получить доступ к ней с помощью Apps Script или API, соответствующие ячейки будут отображать «# N / A». Вы по-прежнему сможете просматривать эту историческую информацию. данные из приложения Sheets, и вы по-прежнему сможете загружать текущие данные и получать доступ к текущим данным с помощью Apps Script или API. Пожалуйста, имейте это в виду при использовании функции GOOGLEFINANCE в будущем.

...