ReferenceError:“ e”未定义|仅在一张纸上运行多个脚本的困难

时间:2019-02-13 10:33:31

标签: google-apps-script google-sheets

对于我的工作,我制作了一个电子表格,可以跟踪†他各自的机器的所有不同任务的维护日期。

我的脚本运行良好,但是我注意到它可以在工作表中的所有页面上运行。

所以我一直在寻找解决方案,但似乎无法为我找到适合自己的解决方案。

我一直在使用的脚本:

function onEdit(e) {
   if (e.range.getColumn() == 6) {
     e.range.offset(0, 3).setValue("")}
  };
  function onEdit2(e) {
   if ([10].indexOf(e.range.columnStart) != -1) {
     e.range.offset(0, 1).setValue(newDate()).setNumberFormat("dd.MM.yyyy | HH:mm")};
}

有了这个,我就最接近完成任务了(我认为)

function Autoclear(e){

  var sheet = event.source.getActiveSheet(e);
  if(sheet.getName()=='Onderhoud'){
  var editedCell = sheet.getActiveCell();
           if (e.range.getColumn() == 6) {
         e.range.offset(0, 3).setValue("")}
      }
  };

function Timestamp(e){

  var sheet = event.source.getActiveSheet(e);
  if(sheet.getName()=='Onderhoud'){
  var editedCell = sheet.getActiveCell();

       if ([10].indexOf(e.range.columnStart) != -1) {
         e.range.offset(0, 1).setValue(new Date()).setNumberFormat("dd.MM.yyyy | HH:mm")};
}
}

保存时这不会给我错误,但是运行时我确实会收到错误消息。 (ReferenceError:“ e”未定义)

主要目标是使脚本在1个特定页面上运行:“ Onderhoud”

如果有一些格式不正确或信息遗留的信息,我将非常高兴提供。

2 个答案:

答案 0 :(得分:0)

onEdit触发器不应手动运行。当触发器通过电子表格中的任何编辑运行触发器时,电子表格服务将传递e对象。

答案 1 :(得分:0)

尝试使用此脚本,而不是您拥有的脚本

function onEdit(e) {
var sheet = e.source.getActiveSheet();
var ind = [6, 10].indexOf(e.range.columnStart);
if (sheet.getName() == 'Onderhoud' && ind > -1) {
    if (ind === 0) {
        e.range.offset(0, 3).setValue(null)
    } else {
        e.range.offset(0, 1).setValue(new Date()).setNumberFormat("dd.MM.yyyy | HH:mm")
    };
};
}

如阿米特(Amit)所述,请编辑指定的列(而不是从脚本编辑器运行脚本)以检查脚本是否有效。