0

我在尝试将数据添加到我的 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 |
+------------+-----------------+----------------+----------------+----------------+-------------+

插入查询的结果 ^

4

1 回答 1

1

使用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 或结果。

于 2018-05-17T15:28:56.203 回答