在退出单元格之前,似乎不会触发此函数,因为我得到的值是更改后的值。我需要预更改值,但实际上我只需要编辑特定列。
谢谢
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
var r = s.getActiveCell();
var columnNum = r.getColumn();
var msg;
if (columnNum == 11) {
var dateCell = s.getRange(r.getRow(), 11);
var v=dateCell.getValue();
msg = 'Value= ' + v;
Browser.msgBox (msg);
//dateCell.setValue(v);
}
}
答案 0 :(得分:1)
这是一个非常古老的问题,但是如果其他人需要答案,则使用事件对象很容易地获得任何已编辑单元格的旧值和新值:
function onEdit(e) {
let oldValue = e.oldValue;
let newValue = e.value;
console.log('The range's old value was: ' + oldValue + ', and the updated value is: ' + newValue);
}
以下是Google Sheets event objects的可访问属性。
答案 1 :(得分:0)
据我所知,在编辑前仍然无法捕获单元格的值。
您可能希望加注明星this issue on the issue tracker;它目前被视为中等优先级的增强请求。
答案 2 :(得分:0)
@AdamL无论如何以编程方式访问电子表格修订历史记录?
对不起,这超出了我的noob能力,但我的问题可能为A B问题的解决方法提供了线索。
@A B另一个可能的解决方法 您可以设置基于时间的触发器来填充2个数组。来自您检查编辑的列中的当前数据的1个数组,以及来自相同数据的先前快照的1个数组。然后通过使用循环来测试自上次触发事件以来是否有任何值已更改,您可以确定哪些值/值已更改(如果有)如果您的测试值已更改,则推送rowNumber()和colNumber()并将相同数据的先前和当前实例的getValue()添加到新数组中,还包括时间戳新的Date()。让这个新的数组数据填充新的工作表或电子表格。
如果与onEdit函数一起使用,您将能够看到前后值变化及其发生的大致时间。
基于时间的触发器可以设置为每分钟,每小时等运行