Заполните ячейку меткой времени редактирования другой ячейки ТОЛЬКО, если другая ячейка не пуста - PullRequest
0 голосов
/ 18 декабря 2018

Мне нужно заполнить ячейку в таблице Google с меткой времени выпуска другой ячейки.Но эта временная метка должна отображаться только в том случае, если другая ячейка редактируется с некоторым содержимым, а не со стиранием ячейки.

Я пробовал использовать этот код, но временная метка отображается также, если я удаляю другую ячейку.

function onEdit(e) 
{
  if ([8].indexOf(e.range.columnStart) != -1) 
  {
    if ([8].indexOf(e.range.columnStart) === '') 
    {
      e.range.offset(0, -7).setValue('0');
    }
    else
     e.range.offset(0, -7).setValue(new Date()).setNumberFormat("yyMMdd HH:mm:ss");
  }      
}

1 Ответ

0 голосов
/ 18 декабря 2018
function onEdit(e) {
  // Make sure our edit is a single cell in the H column
  // and that our edit has a value
  if(e.range.columnStart === 8 && e.value.length) {
    e.range.offset(0, -7).setValue(new Date()).setNumberFormat("yyMMdd HH:mm:ss");
  } else {
    e.range.offset(0, -7).setValue('0');
  }
}

Обновленное условное выражение теперь выполняет 3 проверки:

  • e.range.columnStart === 8 гарантирует, что мы начинаем в столбце H
  • e.value.length гарантирует, что

    1. наше редактирование не является пустым
    2. редактирование затронуло только одну ячейку, так как e.value недоступно при редактировании нескольких ячеек (см .: Раздел редактирования )

[8].indexOf(e.range.columnStart) === '' Я удалил это, поскольку indexOf не может вернуть пустую строку.Он всегда будет иметь значение false и был причиной всех изменений, обновляющих метку времени.

РЕДАКТИРОВАТЬ: Документация для columnStart , все еще ища официальный источник Google.e.range.getHeight() === 1 && e.range.getWidth() === 1 && e.range.getColumn() === 8 является проверенной альтернативой.

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