2
我正在制作一个定期写入SQL服务器的Google表格。这是我的代码到目前为止,少了SQL的东西。它抓取数据库中最后一个条目的一个变量(本次测试中的“用户”),并提交它后面的所有内容。JavaScript变量缺失值
function connectToMySqlDB() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
var lastColumn = sheet.getLastColumn();
Logger.log('Starting query process... ');
// Connect to DB and get last entry
var lastline = "User"
Logger.log('Found serial number of last enter in SQL Database: ' + lastline);
// Find row of entry in goolge sheet
for (var i = 0; i < values.length; i++) {
var row = "";
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] == lastline) {
row = [i+1]
Logger.log('Found serial number in row: ' + row);
}
}
}
// Get first unfilled row
var crange = sheet.getRange("C1:C").getValues();
var Clast = crange.filter(String).length;
Logger.log('Found last row in C: ' + Clast);
var cfin = [Clast - row]
Logger.log('Slection will be: ' + row + ' rows.');
// select rows from entry to last filled row
var selection = sheet.getRange(row,0,cfin,lastColumn)
// Submit rows line by line to DB (from last entry to first unfilled)
// Write one row of data to a table.
}
我从谷歌的错误得到的错误是:
The coordinates or dimensions of the range are invalid. (line 33, file "Code")
使用调试工具,变“行”没有价值。但日志文件表明它的工作原理
[16-09-15 11:39:41:063 PDT] Starting query process...
[16-09-15 11:39:41:064 PDT] Found serial number of last enter in SQL Database: User
[16-09-15 11:39:41:067 PDT] Found serial number in row: 26
[16-09-15 11:39:41:157 PDT] Found last row in C: 37
[16-09-15 11:39:41:158 PDT] Selection will be: rows.
我的猜测是“var cfin = [Clast-row]”正在清除“row”变量。我不知道如何解决这个问题。
你为什么用方括号把'row = [i + 1]'和'var cfin = [Clast-row]你意识到会为你创建一个数组,对吗? – Jamiec
看着你的double for循环看起来,行变量的值在找到目标值后被外层循环覆盖。找到值后,添加一个标志并跳出外部循环。 – Ma3x