Это моя первая публикация, поэтому я надеюсь, что я сделал все правильно :)
Я реализовал сценарий в листах google, который создает метку времени в столбце B, когда ячейка редактируется в этой строке.
Он отлично работает, за исключением:
Любые идеи по устранению этих проблем?
Здесь мой код
function onEdit(e) {
var s = SpreadsheetApp.getActiveSheet();
var r = s.getActiveCell();
if( r.getColumn() != 2 && e.source.getActiveSheet().getName() === "MySheet") { //checks the column & checks the sheet is the correct one
var row = r.getRow();
var time = new Date();
time = Utilities.formatDate(time, "GMT+10:00", "dd/MM/yyyy HH:mm:ss");
SpreadsheetApp.getActiveSheet().getRange('B' + row.toString()).setValue(time);
};
};
И вот пример таблицы, в которой есть код:
Обычно полезно использовать объект события для всего, что связано с этим действием.
Обработка нескольких строк может осуществляться с использованием диапазона события немного дальше, чтобы получить его размер.
function onEdit(e) {
var r = e.range;
if(r.getColumn() !== 2 && r.getSheet().getName() === "MySheet") {
var row = r.getRow();
var lastRow = r.getLastRow();
var time = new Date();
time = Utilities.formatDate(time, "GMT+10:00", "dd/MM/yyyy HH:mm:ss");
r.getSheet().getRange(row, 2, lastRow - row + 1, 1).setValue(time);
};
};
e
в onEdit является объектом события. Объекты событий несут свойства, такие как новое значение, старое значение и отредактированный диапазон. Вы могли бы решить это с помощьюgetActiveRange
но это может измениться междуonEdit
иgetActiveRange
функциейgetActiveRange
, если вы работаете быстро. Вы можете прочитать больше об объектах событий здесь