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

我发现这个脚本,并试图在谷歌表中使用它。 我遇到的麻烦是我得到一个错误消息“你没有权限调用setValue(第8行)”,当我改变一个值,它只会创build一个单元格的第一个条目的时间戳。 如果我编辑单元格,时间戳不会更改。 有人可以看看这张纸,看看有什么不对。 对不起,我是一个新手编写代码,我不明白所有的行。 这是表格这是我正在使用的脚本:

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

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

感谢您的任何build议。

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

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

参考

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

如果要在col B中编辑完date/时间戳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,所以不需要在电子表格中input公式(= onedit())。 请注意: – 删除col B中的一个值将导致图章消失(如果你不想要,请让我知道)。 – 通过123button将col M作为date/时间格式化。

看看这是否有帮助?