我对此应用脚本存在问题,该脚本试图将数据添加到我的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?
非常感谢!
OM。
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 ..到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 |
+------------+-----------------+----------------+----------------+----------------+-------------+
插入查询的结果^
答案 0 :(得分: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或结果。