OnEdit脚本,用于在编辑行时更改时间戳(错误)

时间:2015-09-02 15:58:02

标签: excel google-sheets

我找到了这个脚本,并尝试在google工作表中使用它。我遇到的麻烦是我收到一条错误消息"你没有权限调用setValue(第8行)。",当我更改一个值时,它只会为第一个条目创建时间戳在一个牢房里。如果我编辑单元格,则时间戳不会更改。有人可以看看这个脚本,看看有什么问题。对不起,我是编写代码的新手,我不了解所有的内容。 这是sheet 这是我正在使用的脚本:

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
  var r = s.getActiveCell();
  if( r.getColumn() != 2 ) { //checks the column
    var row = r.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss");
    SpreadsheetApp.getActiveSheet().getRange('M' + row.toString()).setValue(time);
  }
}

为了运行脚本我输入= onedit(a3:l3),它似乎是让它完全工作的唯一方法。 谢谢你的帮助

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

尝试对代码进行以下注释更改

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  var r = s.getActiveCell();
if( r.getColumn() != 2 ) { //checks the column
  var row = r.getRow();
  var time = new Date();
  time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss");
// remove this line below
SpreadsheetApp.getActiveSheet().getRange('M' + row.toString()).setValue(time);

//replace with this line below
return time;
  }
}

Reference

您不能将值设置为在电子表格上设置自定义公式的位置之外的单元格,这是不合逻辑的。

答案 1 :(得分:0)

如果您想在col B中完成编辑时使用日期/时间戳col M,请尝试以下操作:

function onEdit(e) {
var s = SpreadsheetApp.getActiveSheet();
if(s.getName() !== 'Sheet1' || e.range.columnStart != 2 || e.range.rowStart < 2) return;
e.range.offset(0, 11).setValue(e.value ? new Date() : "");
}

由于这是onEdit,因此无需在电子表格中输入公式(= onedit())。注意: - 删除col B中的值将导致戳记消失(如果你不想这样,请告诉我)。 - 通过123按钮将col M格式化为日期/时间。

看看这有帮助吗?