Сценарий приложения.getValue(), возвращающий #N/A

У меня проблема с этим сценарием приложений, который пытается добавить данные в мою базу данных Google Cloud. Проблемные переменные: Open, High, Low, Close; это все значения, найденные по формулам на листе "RAW". Формулы за Open, High, Low, Close выглядят так:

=round(index(B6:B35,match($A$3,$A$6:$A$35,0))/index(AUD!C:C,match(A3,AUD!A:A,0)),8)

Когда запрос пытается выполнить, getValue() возвращает #N/A, как и getDisplayValue(), который не совпадает с параметрами таблицы.

Проблема возникает только тогда, когда ячейки ссылки содержат формулы, когда я изменяю эти ячейки на целые числа, чтобы проверить, проходит ли это к базе данных без проблем.

Есть ли другой способ сделать это, или прекратить getValue(), возвращая #N/A?

Большое спасибо!

ОМ.

function insert() {

// RAW Variables
  var date_  = Utilities.formatDate(SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW').getRange('A3').getValue(), "GMT+10", "yyyy-MM-dd");
  var open_  = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW').getRange('B3').getValue()
  var high_  = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW').getRange('C3').getValue()
  var low_   = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW').getRange('D3').getValue()
  var close_ = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW').getRange('E3').getValue()
  var volume_= SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW').getRange('F3').getValue()

// Connection Variables
  var connectionName = '.....';
  var user = '.....';
  var userPwd = '......';
  var db = '.....';
  var dbUrl = 'jdbc:google:mysql://' + connectionName + '/' + db;
  var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
  var stmt = conn.createStatement()

// Query  
  var query="insert into test(Date, Open, High, Low, Close, Volume) values('"+date_+"','"+open_+"','"+high_+"','"+low_+"','"+close_+"','"+volume_+"')"

  stmt.execute(query)
  stmt.close()
  conn.close()
 }

Обновить:

Добавив iferror() в начало формул, я смог получить значение ошибки в таблице, однако для меня это не идеальный результат.

Тот факт, что getValue() или getDisplayValues ​​() не возвращает результат формулы, является моей самой большой проблемой. Что самое странное, это то, что самый правый столбец также является формулой: =index(F6:F35,match($A$3,$A$6:$A$35,0))

Единственная разница между этой формулой и проблемными - это оператор деления '/'. Есть мысли по этому поводу?

Вне тестирования запроса вставки я также проверял, используя Open, High.. to cell.setValue(), внутри листов и получая тот же результат # N / A.

| 2018-05-13 | 11278.421244330 | 11620.21125128 | 11118.99605973 | 11554.50481772 |  5866380000 |
| 2018-05-14 | 11576.562811400 | 11799.80070418 | 11118.00969906 | 11581.46548861 |  7364150000 |
| 2018-05-15 | 11657.201395350 | 11832.62472130 | 11324.11133355 | 11396.32950125 |  6705710000 |
| 2018-05-16 |     0.000000000 |     0.00000000 |     0.00000000 |     0.00000000 |  6760220000 |
+------------+-----------------+----------------+----------------+----------------+-------------+

Результат от запроса вставки ^

2 ответа

Решение

Используйте IFERROR для устранения N/A и #DIV/0!

=IFERROR(formula, "value to display if an error occurs")

Я не могу проверить ваши, но я бы сказал, что это то, что вы ищете:

=IFERROR(round(index(B6:B35,match($A$3,$A$6:$A$35,0))/index(AUD!C:C,match(A3,AUD!A:A,0)),8), 0)

getValue () теперь всегда будет возвращать 0 или результат.

У меня была аналогичная проблема при попытке получить информацию из запроса с importrange. Я думаю, что вы не можете использовать данные из диапазона импорта в качестве значения, хотя это может быть комбинация обоих. Если значение вашего индекса в формуле представляет собой данные importrange, вероятно, это и есть причина.

Я пытался создать динамическую формулу для вставки на листы на основе выбранного столбца. Он продолжал давать #N/A, пока я пытался получить информацию о столбце из диапазона импорта. Как только я перешел от сопоставления, в котором использовались данные importrange, к расчетному способу определения столбца, все заработало.

Другие вопросы по тегам