Скрипт для вставки даты и времени при редактировании ячейки в Google Таблицах
Задача:
Иногда возникает необходимость автоматически записывать дату и время внесения изменений в определенные ячейки. Это может быть полезно для отслеживания активности, ведения журналов изменений и обеспечения контроля над обновлениями данных.
Когда это полезно:
1. Отслеживание изменений: Ведение журнала изменений данных для аудита или анализа.
2. Контроль сроков выполнения: Отслеживание времени выполнения задач или обновлений информации.
3. Повышение прозрачности: Учет времени и даты изменений для повышения прозрачности и ответственности сотрудников.
Решение:
Для автоматического добавления даты и времени при редактировании ячеек используем скрипт Google Apps Script.
/**
* Триггер события EDIT
*
* @param {GoogleAppsScript.Events.SheetsOnEdit} e
*/
function onEdit(e){
// Определяем имя листа, на котором обрабатываем событие редактирования ячейки
const watchingSheet = 'Добавить дату в строке при изменении ячейки';
// Определяем индекс столбца в котором обрабатываем событие редактирования ячейки
const watchingColIndex = 6;
// Определяем индекс столбца в который будем записывать дату/время
const targetColIndex = 8;
// Из объекта события получаем измененный диапазон и из диапазона лист, на котором он расположен
const sheet = e.range.getSheet();
// Проверяем, что имя листа, на котором произошло событие соответствует указанному в переменной `targetSheetName`
if (sheet.getName() !== watchingSheet) {
// И, если событие произошло на другом листе, то прекращаем выполнение функции
return;
}
// Определяем индекс столбца в котором произошло событие
const column = e.range.getColumn();
// Проверяем, в нужном ли столбце произошло событие
// и соответствует ли новое значение нужному нам
// проверку на значение можно убрать
// для этого нужно удалить этот фрагмент: "&& e.value === 'Готово'"
if (column == watchingColIndex && e.value === 'Готово') {
// Устанавливаем дату и время в ячейку на пересечении строки, в которой было изменение
// и столбца, указанного в переменной `targetColIndex`
e.source.getActiveSheet().getRange(e.range.getRow(), targetColIndex).setValue(new Date());
}
}
Пример тут
https://docs.google.com/spreadsheets/d/1IHDKe-5Tzv...
Оригинал тут
https://t.me/GoogleSheets_ru/213