嗨我正在尝试在编辑另一个单元格时更改单元格值。它实际上有效,但只有当我想写入的单元格为空时。这是代码:
function onEdit(e){
var sheet = SpreadsheetApp.getActiveSheet();
var sheetName = sheet.getName();
if (sheetName == 'Functional Tests') {
Logger.log('You are in Functional Tests');
var activeCell = sheet.getActiveCell();
Logger.log('Active cell: ' + activeCell.getColumn());
if ( activeCell.getColumn() == 5) {
Logger.log('Your are working on result column');
var rowIndex = activeCell.getRowIndex();
var resultRange = sheet.getRange("E:E");
var resultCol = 6; //resultRange.getColumn();
var resultCell = sheet.getRange(rowIndex, resultCol);
Logger.log('Row index: ' + rowIndex + ' Result col: ' + resultCol);
var date = Utilities.formatDate(new Date(), 'GMT+1', 'dd/MM/yyyy HH:mm');
resultCell.setValue(date);
}
}
}
有人知道如何解决这个问题吗?提前谢谢。
答案 0 :(得分:1)
我无法重现您的问题。但是你可以消除对电子表格的大部分调用(getColumn,getActiveCell,..),因为所有这些调用都已作为eventobject(e)的参数传入。所以这样的事情应该(也)起作用:
function onEdit(e) {
if(e.source.getActiveSheet().getName() !== 'Functional Tests' ||
e.range.columnStart !== 5) return;
e.range.offset(0, 1).setValue(Utilities.formatDate(new Date(), 'GMT+1', 'dd/MM/yyyy HH:mm'))
}
也许你知道时间戳没有更新,因为你没有在formatDate中使用秒?因此,分钟内的变化不会以这种方式反映出来。您可以通过格式化检查为HH:mm:ss,然后查看它是否发生变化..?