繁体   English   中英

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

[英]Google Apps Script onEdit(e) for specific column does not work

我知道这个问题已经得到解答,但我尝试了多种方法,无法理解为什么我的脚本不起作用。 所以我希望它只在您编辑特定列(数字 8 将是 H 列)时运行 function 但它不起作用,并且当我编辑任何单元格时 function 运行。

请修改我的代码并让我知道是否有任何遗漏,因为我尝试了多种方法但它们不起作用。

提前致谢

我的代码

 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:对于上下文,function 删除数据库中的所有记录并从工作表中插入行,如果您还可以让我知道一种在不删除记录的情况下执行此操作的方法,但每次运行时都不会插入重复的条目,我会非常感谢。

function 在我编辑任何单元格时运行,我想在我只编辑一列时运行

当用户更改文档中任何单元格的值时, 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(); 
    };
  
  };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM