Лучшие практики Google Scripts с двумя функциями
Я не уверен, что моя проблема здесь. У меня есть посетитель офиса, входящий / выходящий из таблицы Google. Вот как я пытаюсь заставить его работать. Когда посетитель устанавливает флажок в столбце "в", отметка времени будет отображаться в следующем столбце. Когда посетитель устанавливает флажок в столбце "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());
}
}
}
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());
}
}
}