#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();
}
}
Примечание.Поскольку вы являетесь владельцем электронной таблицы, вы не можете сделать ячейку недоступной для редактирования. Но вы можете добавить защиту, чтобы сделать его недоступным для редактирования другими.