Как вставить дату и время, когда флажок установлен в листе Google? - PullRequest
1 голос
/ 09 апреля 2020

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

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "Sheet1" ) { //checks that we're on Sheet1 or not
    var r = s.getActiveCell();
    if( r.getColumn() == 1 ) { //checks that the cell being edited is in column A
      var nextCell = r.offset(0, 4);
      nextCell.setValue(new Date());
    }
   else if( r.getColumn() == 4 ) { //checks that the cell being edited is in column A
      if(r.getValue() == "TRUE") {
        var nextCell = r.offset(0, 2);
          nextCell.setValue(new Date());
      }
    }
  }
}

1 Ответ

2 голосов
/ 09 апреля 2020
  • Вы хотите поместить объект даты в столбец «F», если установлен флажок в столбце «D».
  • Вы хотите запустить сценарий с триггером события OnEdit.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Точки модификации:

  • В вашем сценарии я считаю, что оператор if if(r.getValue() == "TRUE") {} требуется изменить. В этом случае, когда r.getValue() является логическим типом, r.getValue() == "TRUE" всегда равен false. При этом скрипт в операторе if не запускается. Я думаю, что это является причиной вашей проблемы.

Модифицированный скрипт 1:

Когда ваш скрипт модифицирован, пожалуйста, измените его следующим образом.

От:

if(r.getValue() == "TRUE") {

Кому:

if(r.getValue() === true) {

или

if(r.isChecked()) {
  • В этом случае вы также можете использовать isChecked().

Модифицированный скрипт 2:

Когда используется объект события, стоимость процесса вашего скрипта может быть немного уменьшена. Ref Пример сценария с использованием объекта события выглядит следующим образом.

Пример сценария:

function onEdit(e) {
  var range = e.range;
  var sheet = range.getSheet();
  if(sheet.getSheetName() == "Sheet1") {
    if(range.columnStart == 1) {
      var nextCell = range.offset(0, 4);
      nextCell.setValue(new Date());
    } else if(range.columnStart == 4 && range.isChecked()) {
      var nextCell = range.offset(0, 2);
      nextCell.setValue(new Date());
    }
  }
}

Ссылки:

Если я неправильно понял ваш вопрос и это было не то направление, которое вы хотите, я прошу прощения.

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