简体   繁体   English

OnEdit() 函数仅在我手动运行脚本时运行

[英]OnEdit() function runs only when I run the script manually

I've created a spreadsheet and added some values, I'm trying to capture the timestamp of the last edited cell within a range of cells.我创建了一个电子表格并添加了一些值,我正在尝试捕获一系列单元格内最后编辑的单元格的时间戳。 The below script does this job perfectly but only when I run the script manually that is when I press the "run" button in the editor, but that sort of defeats the purpose.下面的脚本完美地完成了这项工作,但只有当我手动运行脚本时,即当我按下编辑器中的“运行”按钮时,但这种方式违背了目的。 What am I missing?我错过了什么?

My code:我的代码:

function OnEdit(e) {

  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();
  if(r.getColumn() > 7 && r.getColumn() <= 13 && ss.getName()=='Moto') { 
  var celladdress ='Q'+ r.getRowIndex() 
  ss.getRange(celladdress).setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");
  }
};

The function name should be onEdit -- notice the o is lowercase.函数名应该是onEdit —— 注意o是小写的。 Try this:尝试这个:

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();
  if(r.getColumn() > 7 && r.getColumn() <= 13 && ss.getName()=='Moto') { 
    var celladdress ='Q'+ r.getRowIndex() 
    ss.getRange(celladdress).setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");
  }
}

This is the same function taking advantage of the event object.这是利用事件对象的相同功能。 I assumed that you mispelled onEdit() when you moved it to SO since it wouldn't run otherwise.我认为当你将它移动到 SO 时你拼错了 onEdit() 因为它不会以其他方式运行。 The format string should be MM/dd/yyyy HH:mm格式字符串应为MM/dd/yyyy HH:mm

function onEdit(e) {
  var sh=e.range.getSheet();
  if(e.range.columnStart > 7 && e.range.columnStart <= 13 && sh.getName()=='Moto') { 
    sh.getRange(e.range.rowStart,17).setValue(new Date()).setNumberFormat("MM/dd/yyyy HH:mm");
  }
}

The onEdit trigger only fires on User Edits. onEdit 触发器仅在用户编辑时触发。

simple date format 简单的日期格式

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

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