Использование оператора If для добавления метки времени, если галочка была отмечена - PullRequest
0 голосов
/ 06 июня 2019

У меня есть лист, который содержит поле для галочки (ячейка C36). Я изменил валидацию данных, поэтому, когда отмечена галочка, ячейка = 1, а когда снята галочка - = 0.

Теперь мне нужен скрипт, который, когда C36 = 1, ставит отметку времени (ЧЧ: мм) в B39 без использования функции NOW (), а когда C36 = 0, это B39 должно быть пустым / пустым.

Я пытался использовать функцию NOW (), но она обновляется каждый раз, когда что-то меняется на странице, и я хочу, чтобы это было статичным с момента, когда оно отмечено. Я использовал скрипт If / else, но он либо ничего не вводит в ячейку, либо у него всегда будет время, даже если флажок не отмечен.

function onEdit() {

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Page 1');
  var time = ss.getRange('B39');
  var tick = ss.getRange('C36');

  if(tick =='1'){
    time.setValue(new Date()).setNumberFormat("HH:mm");
  }

  else if (tick =='0'){
    time.setValue("");
}
}

1 Ответ

0 голосов
/ 06 июня 2019

Это должно делать именно то, что вы хотите:

    function onEdit(e){
      var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Page 1');
        var range = e.range;
  Logger.log(range.getColumn()+ " "+range.getRow())
  if (range.getColumn() != 3) 
  {Logger.log("wrong column")
  return;}
  if (range.getRow() != 36) return;
  var prettyTime= Utilities.formatDate(new Date(),'America/Los_Angeles', "HH:mm" );
  var B39 = ss.getRange(39,2);
  if (range.getValue() == true) 
    B39.setValue(prettyTime);
  if (range.getValue()== false) 
    B39.setValue("n/a");

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

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