Автоматическая отметка времени при редактировании: диапазон - PullRequest
0 голосов
/ 15 января 2019

Я не очень хорошо разбираюсь в сценариях, поэтому обратился за помощью. У меня есть Google Sheet, для которого я хочу, чтобы ячейка (K17) автоматически помечала время, когда любая ячейка в диапазоне (A1: L30) изменяется / обновляется.

Только сценарии, которые я могу найти, - когда конкретные ячейки обновляются, они автоматически ставят отметку рядом с ячейкой. Вот пример кода, который я нашел:

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 13 ) { //checks the column
     var nextCell = r.offset(0, 1);
     if( nextCell.getValue() === '' ) //is empty?
       var time = new Date();
       time = Utilities.formatDate(time, "GMT", "HH:mm:ss");
       nextCell.setValue(time);
   };
 };
}

1 Ответ

0 голосов
/ 15 января 2019

Ключом к этому является проверка объекта события , который передается - ваш пример этого не делает. Как только вы можете изучить событие, вы можете увидеть диапазон, который был затронут. Затем сравните с любым критерием (ваш находится в пределах A1: L30, то есть в первых 30 строках и в 12 столбцах листа 1):

function onEdit(e) {
  var editedRange = e.range;                 // This is what got edited
  var editedSheet = editedRange.getSheet();  // Ranges belong to a sheet
  if (
    (editedSheet.getName() == "Sheet1")      // correct sheet?
    && (editedRange.getColumn() <= 12)       // column L is number 12
    && (editedRange.getRow() < 30)           // We're on row 30 or less
  ) {
      var time = new Date();  
      time = Utilities.formatDate(time, "GMT", "HH:mm:ss");    
      editedSheet.getRange("K17").setValue(time);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...