Удалить отметку даты, когда предыдущая ячейка очищена? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть скрипт, который я использую в настоящее время для добавления отметки даты при изменении низкого уровня запасов на предмете. Я хочу, чтобы он удалил отметку даты, когда ячейка инвентаря очищена (если товар закончился). .

В принципе, мне нужна отметка даты только в том случае, если есть информация в предыдущей ячейке, и я хочу, чтобы дата обновлялась каждый раз, когда я меняю информацию в предыдущей ячейке.

Я очень новичок скриптам. Это возможно? Вот сценарий, который я использую и нашел в Интернете:

function onEdit() {
 
var s = SpreadsheetApp.getActiveSheet();
 
if( s.getName() == "Data" ) { //checks that we're on the correct sheet
 
var r = s.getActiveCell();
 
if( r.getColumn() == 4 ) { //checks the column
 
var nextCell = r.offset(0, 1);
 
nextCell.setValue(new Date());
 
}
 
}
 
}

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Вы хотите выполнить какое-то действие в зависимости от того, содержит ли текущая ячейка информацию или нет. Вы можете получить текущее значение в ячейке с помощью .getActiveCell().getValue() и использовать его с if else, чтобы условно выполнить некоторые действия. В приведенном ниже примере мы устанавливаем метку времени, если значение истинно, и очищаем ячейку метки времени, если значение ложное.

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  if (s.getName() !== "Data") return; // exit if not in "Data"
  var r = s.getActiveCell();
  if (r.getColumn() !== 4 ) return; // exit if not editing col D
  var nextCell = r.offset(0, 1);
  // make a stamp or remove the stamp based on current cell value
  if (r.getValue())
    nextCell.setValue(new Date())
  else nextCell.clear();
}
0 голосов
/ 11 июля 2020

Попробуйте следующее:

function onEdit(e) {
  const sh=e.range.getSheet();
  if(sh.getName()=="Data" && e.range.columnStart==4) { 
    const ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"E MMM dd, yyyy HH:mm:ss");
    if(e.value) {
      e.range.offset(0,1).setValue(ts);//if D is not blank
    }else{
      e.range.offset(0,1).setValue('');//if D is blank
    } 
  }
}

Формат даты

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