Требования:
Добавить метку времени в ячейку при первом редактировании этой строки.
Решение:
Используйте onEdit(e)
простой триггер вместе с оператором if
, чтобы убедиться, что столбец метки времени пуст перед установкой значения даты.
Пример:
function onEdit(e) {
var sh = e.source.getActiveSheet();
var row = e.range.getRow();
var col = e.range.getColumn();
var stampCol = sh.getRange(row, 1);
//check if "stampCol" is empty
if (!stampCol.getValue()) {
var tz = e.source.getSpreadsheetTimeZone();
var date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy hh:mm:ss');
stampCol.setValue(date); //set timestamp
}
}
Пояснение:
Я определил var stampCol
как столбец 1 для той же строки, которая редактируется. Затем оператор if
проверяет, является ли stampCol
пустым, если это так, то он будет отмечать время строки. Проверяя, является ли stampCol
пустым, он останавливает сценарий от записи временных меток в эту строку при каждом редактировании, потому что он будет пустым только при первом запуске.
Затем, используя Utilities.formatDate()
Я создал метку времени в формате, определенном в сценарии, вы можете изменить его так, как вы хотите, чтобы он отображался. В настоящее время он использует часовой пояс электронной таблицы с var tz
, вы также можете изменить его, чтобы использовать предпочтительный часовой пояс.
Вот некоторые параметры часового пояса в Google Apps Script:
//use spreadsheet timezone setting
var tz = e.source.getSpreadsheetTimeZone();
//use script timezone setting
var tz = Session.getScriptTimeZone();
//enter your own time zone
var tz = 'GMT+0';
Ссылки:
- Simple
Документация по триггерам
- Время
Зоны
- Форматы даты