我知道这个问题已得到解答,但我尝试了多种方法,无法理解为什么我的脚本不起作用。因此,我希望它仅在您编辑特定列(即 H 列的编号 8)时才运行该函数,但它不起作用,并且该函数在我编辑任何单元格时运行。
请修改我的代码,如果我尝试了多种方法但它们不起作用,请修改我的代码,如果有任何遗漏,请告诉我。
提前致谢
function onEdit(e) {
var server = "" , dbName = "" , username = "" , password = "" , port = 3306;
var url = "jdbc:mysql://"+server+":"+port+"/"+dbName;
var conn = Jdbc.getConnection(url, username, password);
var range = e.range;
var col = range.getColumn();
if (col === 8) {
var stmt_del = conn.prepareStatement('Delete from sheets_db');
var exe_del = stmt_del.execute();
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var stmt_inst = conn.prepareStatement('INSERT INTO sheets_db (Full_Name, LOS, Grade, Sub_LoS, E_mail, DS_Floor, DS_Desk) values (?, ?, ?, ?, ?, ?, ?)');
for (var i = 1; i < data.length; i++) {
stmt_inst.setString(1, data[i][0]);
stmt_inst.setString(2, data[i][1]);
stmt_inst.setString(3, data[i][2]);
stmt_inst.setString(4, data[i][3]);
stmt_inst.setString(5, data[i][4]);
stmt_inst.setString(6, data[i][5]);
stmt_inst.setString(7, data[i][6]);
stmt_inst.addBatch();
};
var exe_inst = stmt_inst.executeBatch();
};
conn.close();
};
PD:对于上下文,该函数会删除数据库中的所有记录并插入工作表中的行,如果您还可以让我知道一种无需删除记录但在每次运行时不插入重复条目的方法,我会非常感谢。
该函数在我编辑任何单元格时运行,我想在我只编辑一列时运行
onEdit
当用户更改文档中任何单元格的值时将被激活。你无法摆脱它。
if
条件中,这样代码只有在您编辑第 8 列时才会执行。请记住,这适用于每个工作表,如果您需要在if
条件中添加特定工作表名称,请告诉我。
解决方法:
function onEdit(e) {
var range = e.range;
var col = range.getColumn();
if (col === 8) {
var server = "" , dbName = "" , username = "" , password = "" , port = 3306;
var url = "jdbc:mysql://"+server+":"+port+"/"+dbName;
var conn = Jdbc.getConnection(url, username, password);
var stmt_del = conn.prepareStatement('Delete from sheets_db');
var exe_del = stmt_del.execute();
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var stmt_inst = conn.prepareStatement('INSERT INTO sheets_db (Full_Name, LOS, Grade, Sub_LoS, E_mail, DS_Floor, DS_Desk) values (?, ?, ?, ?, ?, ?, ?)');
for (var i = 1; i < data.length; i++) {
stmt_inst.setString(1, data[i][0]);
stmt_inst.setString(2, data[i][1]);
stmt_inst.setString(3, data[i][2]);
stmt_inst.setString(4, data[i][3]);
stmt_inst.setString(5, data[i][4]);
stmt_inst.setString(6, data[i][5]);
stmt_inst.setString(7, data[i][6]);
stmt_inst.addBatch();
};
var exe_inst = stmt_inst.executeBatch();
conn.close();
};
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句