Незначительная корректировка редактора сценариев Google Листов

#google-apps-script #google-sheets

Вопрос:

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

 function onEdit() {
  var sheetName = "Master List";
  var s = SpreadsheetApp.getActiveSheet();
  if (s.getName() !== sheetName) return;
  var r = s.getActiveCell();
  if( r.getColumn() != 5 ) { //checks the column
    var row = r.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-05:00", "MM/dd/yyyy");
    SpreadsheetApp.getActiveSheet().getRange('E'   row.toString()).setValue(time);
  };
 };
 

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

Теперь я хочу, чтобы в столбце E (столбец 5) была проставлена дата, когда редактируется только столбец D (столбец 4). Сейчас я использую его для отслеживания цен. В столбце D будет указана цена, а в столбце E будет указано, когда я в последний раз обновлял цену в электронной таблице.

Я считаю, что редактирование необходимо выполнить в 5-й строке кода, где он получает активную ячейку, ему нужна указанная ячейка вместо любой ячейки в строке. Пожалуйста, дайте мне знать о соответствующих изменениях, которые я должен внести. Спасибо, Сайлас

Ответ №1:

 function onEdit(e) {
  const s = e.range.getSheet();
  if (s.getName() == "Master List" amp;amp; e.range.columnStart == 4 ) {
    s.getRange(e.range.rowStart, 5).setValue(Utilities.formatDate(new Date(), "GMT-05:00", "MM/dd/yyyy"));
  };
}
 

Ответ №2:

Просто замените

 if( r.getColumn() != 5 ) { //checks the column
 

с

 if( r.getColumn() == 4 ) { //checks the column