微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

修改我的代码,如果有任何遗漏,请告诉我,因为我尝试了多种方法,但它们都不起作用。

提前致谢

My code

  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(); 
    };
  
  };

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。