我不确定我的问题在这里。我有办公室访客登录/退出Google电子表格。这就是我试图让它发挥作用的方式。当访问者在“in”列中选中一个复选框时,时间戳将显示在下一列中。当访问者在“out”列中选中一个复选框时,时间戳将显示在下一列中。目前这是它的工作方式:当我在代码编辑器中只有第一个函数时,时间戳显示在第4列 - 就像它应该的那样。当我添加第二个函数时,时间戳显示在第6列中,但不显示在第4列中。这就像第二个函数覆盖第一个函数。什么会纠正这个问题?
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "SignInOut" ) { //checks that we're on the correct sheet
var r = s.getActiveCell();
if( r.getColumn() == 3 ) { //checks the column
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) //is empty?
nextCell.setValue(new Date());
}
}
}
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "SignInOut" ) { //checks that we're on the correct sheet
var r = s.getActiveCell();
if( r.getColumn() == 5 ) { //checks the column
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) //is empty?
nextCell.setValue(new Date());
}
}
}
答案 0 :(得分:1)
两个函数都具有相同的名称,因此它将运行最后一个。
也许你可以避免必须定义相同功能的2倍,尝试类似:
function onEdit(e) {
var s = e.source.getActiveSheet(), r, colCell, nextCell;
if(s.getName() === 'SignInOut') { //checks that we're on the correct sheet
r = e.range; //s.getActiveCell();
colCell = r.getColumn();
if(colCell === 3 || colCell === 5) { //checks the column
nextCell = r.offset(0, 1);
if(nextCell.getValue() === '') //is empty?
nextCell.setValue(new Date());
}
}
}