Не работает из-за очень маленькой детали. Заголовок столбца называется Check IN
, а в сценарии вы ищете тот, который называется Check In
. Так что вам просто нужно изменить это:
var updateColName2 = "Check In";
На это:
var updateColName2 = "Check IN";
Кроме того, если вы хотите, чтобы столбцы Time In
и Date In
заполнялись только тогда, когда значениеCheck IN
столбец равен Yes
, вы должны добавить новое условие, чтобы вы могли изменить это:
if (dateCol2 > -1 && index2 > 1 && editColumn2 == updateCol2) {
На:
if (dateCol2 > -1 && index2 > 1 && editColumn2 == updateCol2 && actRng2.getValue() == "Yes") {
Наконец, вам не нужноопределить переменную headers2
, это то же самое, что и headers
.
EDIT
Кроме того, вы должны добавить эту строку внутри последнего блока if
:
var date2T = Utilities.formatDate(new Date(), timezone, timestamp_formatT);
cell2T.setValue(date2T);
Итак, полный код может выглядеть так:
function onEdit(event) {
var timezone = "GMT+1";
var timestamp_format = "hh:mm:ss"; // Timestamp Format.
var timestamp_formatT = "dd-MM-yyyy";
var updateColName = "Student Name";
var timeStampColName = "Time Out";
var sheet = event.source.getSheetByName('2019/20');
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName);
updateCol = updateCol + 1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) {
var cell = sheet.getRange(index, dateCol + 1);
var cellT = sheet.getRange(index, dateCol + 2);
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
var dateT = Utilities.formatDate(new Date(), timezone, timestamp_formatT);
cell.setValue(date);
cellT.setValue(dateT);
}
var updateColName2 = "Check IN";
var timeStampColName2 = "Time In";
var actRng2 = event.source.getActiveRange();
var editColumn2 = actRng2.getColumn();
var index2 = actRng2.getRowIndex();
var dateCol2 = headers[0].indexOf(timeStampColName2);
var updateCol2 = headers[0].indexOf(updateColName2);
updateCol2 = updateCol2 + 1;
var editedValue = actRng2.getValue();
if (dateCol2 > -1 && index2 > 1 && editColumn2 == updateCol2 && editedValue == "Yes") {
var cell2 = sheet.getRange(index2, dateCol2 + 1);
var cell2T = sheet.getRange(index2, dateCol2 + 2);
var date2 = Utilities.formatDate(new Date(), timezone, timestamp_format);
var date2T = Utilities.formatDate(new Date(), timezone, timestamp_formatT);
cell2.setValue(date2);
cell2T.setValue(date2T);
}
}
Надеюсь, это вам поможет.