特定列的 Google Apps 脚本 onEdit(e) 不起作用

佩佩维拉莫尔

我知道这个问题已得到解答,但我尝试了多种方法,无法理解为什么我的脚本不起作用。因此,我希望它仅在您编辑特定列(即 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google Apps脚本toLocaleDateString不起作用

Google Apps脚本在Chrome中不起作用

Google Apps脚本-日期格式不起作用

Google Apps脚本:InsertImage()函数不起作用

Google Apps 脚本刷新表格 - 图表不起作用

.setNumberFormat在Google Apps脚本中不起作用

Google Apps脚本重命名文件不起作用

Google Apps脚本-setvalues在工作表上不起作用

Apps脚本GmailApp归档不起作用

共享在 Google Apps 脚本编辑器上不起作用

返回匹配数组的索引不起作用-Javascript Google Apps脚本

通过库实施时,Google Apps脚本功能不起作用

通过URL插入图像在Google Apps脚本中不起作用

Google Apps脚本/ Javascript搜索并替换为正则表达式不起作用

Google Apps 脚本在嵌入时不起作用。类型错误:无法调用 null 的方法“getActiveSheet”

锁定服务在使用 Apps 脚本的 Google 表格中不起作用

Google Apps 脚本在嵌入式 iframe 中不起作用

来自 GmailMessage 类正则表达式的 Google Apps 脚本 getPlainBody() 不起作用

范围输入以在Google Apps脚本中起作用

如何获取Google Apps脚本中特定值的检查列?

Google Apps脚本| 如何访问特定范围的行/列数据

Google App脚本-setValues()不起作用

Google Apps脚本.getLastColumn(); 特定行?

Google Apps脚本-自动填充列?

如何获取列范围内的特定数据列?Google Apps 脚本 - Google 表格

Google Apps Script .setvalues For 循环不起作用

获取特定列的值并在特定列上进行过滤-Google Apps脚本

Google Apps脚本要求

调用Google Apps脚本