#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