Отметка времени для повторения каждого 4-го столбца в Google Sheets - PullRequest
1 голос
/ 31 марта 2020

Мне нужно, чтобы моя команда ввела их имена в столбце A, LOGIN или LOGOUT в столбце B, и мне нужна метка времени входа в систему в столбце C и метка времени выхода из системы в столбце D. Мне нужно это повторить в течение 30 дней (месяц ) на каждом листе, что означает, что столбцы B, C и D будут повторяться 30 раз по всему листу.

Имя - LOGIN / LOGOUT - LOGIN-Timestamp - LOGOUT-Timestamp

Я нашел этот код в YouTube (слегка подправлен), который создает две метки времени во 2-м и 3-м столбцах, где вторая обновляется до нового времени, когда столбец 1 обновляется, а первый остается неизменным. Я планировал использовать это, спрятав вторую метку времени (используя условное форматирование), когда пользователь вводит логин, а затем отображать ее, когда пользователь вводит логин. Тем не менее, я не знаю, как вызвать этот сценарий для каждого четвертого столбца в последующие дни. Я потратил почти весь день на то, чтобы понять это, но мое ноу-хау в сценарии крайне ограничено. Любая помощь очень ценится. Большое спасибо.

function onEdit(e) {

  var row = e.range.getRow();
  var col = e.range.getColumn();

  if(col === 1 && row >= 1 && e.source.getActiveSheet().getName() === "Test"){

  var currentDate = new Date();
  e.source.getActiveSheet().getRange(row,3).setValue(currentDate);
  if(e.source.getActiveSheet().getRange(row,2).getValue() == ""){
  e.source.getActiveSheet().getRange(row,2).setValue(currentDate);
  }
 }
}

1 Ответ

2 голосов
/ 31 марта 2020

Ответ:

  1. Получить отредактированную ячейку.
  2. Проверьте, находится ли столбец ячейки в столбце Вход / Выход из системы с помощью оператор %.
  3. Если ячейка справа от редактируемой ячейки пуста, введите дату. Иначе, введите дату в две ячейки справа.

Код:

function onEdit(e) {  
  var row = e.range.getRow();
  var col = e.range.getColumn();  
  var curRow = e.source.getActiveSheet().getRange(row + ':' + row).getValues();

  var sheetNames = ['Put', 'your', 'sheet', 'names', 'here', '...', 'etc']

  if (!sheetNames.includes(e.source.getActiveSheet().getName())) {
    return;
  }

  if((col + 1) % 3 === 0 && row >= 1) {
    var currentDate = new Date();
    if (e.source.getActiveSheet().getRange(row, col + 1).isBlank()) {
      e.source.getActiveSheet().getRange(row, col + 1).setValue(currentDate);
    }
    else {
      e.source.getActiveSheet().getRange(row, col + 2).setValue(currentDate);
    }
  }
}

Надеюсь, это полезно для вас!

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...