Как создать сценарий приложений, который автоматически вводит метку времени при обновлении ячейки до определенных критериев?

#google-apps-script #google-sheets

Вопрос:

Я включил тестовый лист, чтобы упростить это: https://docs.google.com/spreadsheets/d/1XnKnj0lkLmWrs1GcQRBUc_HKd-WEajlKmsX_Rlj-fqI/edit?usp=sharing

Я бы хотел, чтобы, когда я выбираю опцию «Начато» из выпадающего списка в столбце D, она автоматически заполняет столбец F в той же строке текущим временем и датой. И желательно сделать это недоступным для редактирования. Затем, когда выпадающий список в столбце D изменяется на «Завершено», он заполняет другую метку времени в столбце G, что также должно сделать его недоступным для редактирования.

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

Комментарии:

1. Вероятно, вы захотите использовать триггер onEdit.

Ответ №1:

Вы можете использовать триггеры.

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

Попробуйте это:

 function onEdit(e) {
  var row = e.range.getRow();
  var col = e.range.getColumn();
  if(row > 1 amp;amp; col == 4){
    var selected = e.value;
    var date = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy-HH:mm:ss");
    var sh = e.range.getSheet();
    var colEdit = 0;
    if(selected == "Started"){
      colEdit = parseFloat(col 2);
    }else{
      colEdit = parseFloat(col 3);
    }
    var editedRange = sh.getRange(row,parseInt(colEdit),1,1);
    editedRange.setValue(date);
    
    //Optional: Uncomment the code below if you want to add protection to the cell    
    //This will make the cell uneditable to the other users.
    //editedRange.protect();
  } 
}
 

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

Выход:
введите описание изображения здесь