Решил вопрос самостоятельно.
Примечание: Работает, только если Владелец таблицы (xxxx1@gmail.com) выдал права на редактирование таблицы Пользователю (xxxx2@gmail.com). Если не выдавать разрешение на редактирование Таблицы - скрипт не будет работать. А если и заработает, то точно не укажет имя пользователя, который внес изменения в таблице.
Решение:
Создаем скрипт, называем его как угодно (в моем случае "newOnEdit001"), задаем ему код, который ниже:
function newOnEdit001(event) {
// Получаем текущего пользователя
var currentUser = Session.getActiveUser();
// Проверяем, является ли текущий пользователь "xxxx2@gmail.com"
if (!currentUser || currentUser.getEmail() !== 'xxxx2@gmail.com') {
// Если текущий пользователь не совпадает, выходим из функции
return;
}
// Получаем объект события и данные о редактировании
var sheet = event.source.getActiveSheet(); // Лист, на котором произошло редактирование
var range = event.range; // Диапазон ячейки, в которой произошло редактирование
var userEmail = currentUser.getEmail(); // Почта пользователя, который внес изменения
var date = new Date(); // Текущая дата и время редактирования
var sheetName = sheet.getName(); // Имя листа, на котором произошло редактирование
var cellAddress = range.getA1Notation(); // Адрес ячейки, где произошло редактирование
var oldValue = event.oldValue; // Старое значение в ячейке
var newValue = event.value; // Новое значение в ячейке
// Получаем активную таблицу
var spreadsheet = event.source;
// Проверяем, существует ли лист "registry"
var registrySheet = spreadsheet.getSheetByName('registry');
if (!registrySheet) {
// Если листа "registry" нет, создаем его
registrySheet = spreadsheet.insertSheet('registry');
}
// Создаем кликабельную ссылку на измененную ячейку
var cellUrl = spreadsheet.getUrl() + "#gid=" + sheet.getSheetId() + "&range=" + cellAddress;
// Записываем данные о редактировании на лист "registry"
registrySheet.appendRow([
userEmail, // Имя пользователя, который внес изменения
date, // Дата редактирования
sheetName, // Имя листа, где произошло редактирование
'=HYPERLINK("' + cellUrl + '";"' + cellAddress + '")', // Кликабельная ссылка на ячейку
oldValue, // Старое значение в ячейке
newValue // Новое значение в ячейке
]);
}
Для вас важны только вот эти строчки:
var currentUser = Session.getActiveUser();
// Проверяем, является ли текущий пользователь "xxxx2@gmail.com"
if (!currentUser || currentUser.getEmail() !== 'xxxx2@gmail.com') {
// Если текущий пользователь не совпадает, выходим из функции
return;
}
// Получаем объект события и данные о редактировании
var sheet = event.source.getActiveSheet(); // Лист, на котором произошло редактирование
var range = event.range; // Диапазон ячейки, в которой произошло редактирование
var userEmail = currentUser.getEmail(); // Почта пользователя, который внес изменения
var date = new Date(); // Текущая дата и время редактирования
var sheetName = sheet.getName(); // Имя листа, на котором произошло редактирование
var cellAddress = range.getA1Notation(); // Адрес ячейки, где произошло редактирование
var oldValue = event.oldValue; // Старое значение в ячейке
var newValue = event.value; // Новое значение в ячейке
Остальное - это уже чисто под мои личные нужды. Хотите пользуйтесь, хотите нет.
Суть в чем. Скрипт будет работать ТОЛЬКО если редактор будет иметь почту (имя) "xxxx2@gmail.com". Если кто либо другой будет редактировать таблицу - скрипт не заработает.
Если у нас 10 Пользователей, то надо создать 10 скриптов, в каждом из которых поменять вот эти строчки на нужного пользователя (заменить xxxx2@gmail.com на почту нужного вам Редактора):
// Получаем текущего пользователя
var currentUser = Session.getActiveUser();
// Проверяем, является ли текущий пользователь "xxxx2@gmail.com"
if (!currentUser || currentUser.getEmail() !== 'xxxx2@gmail.com') {
Затем, заходим в раздел Триггеры (в редакторе скриптов) предварительно авторизовавшись за Пользователя xxxx2@gmail.com (он же Редактор). Или просто попросите нужного вам пользователя совершить эти действия самостоятельно.
Жмем "Добавить Триггер" - выбираем функцию newOnEdit001, Основное развертывание, Из таблицы, При редактировании - Сохранить.
Теперь, когда Пользователь "xxxx2@gmail.com" будет редактировать Таблицу, сработает Триггер на функцию newOnEdit001, который сначала проверит кто вносит изменения и только затем будет записывать его действия в соответствующем порядке. Скрипт newOnEdit001 можно скопировать N раз и задать за каждого Пользователя N количество триггеров.
Тем самым, в таблице вы всегда будете знать кто, когда, где, как вносил изменения в вашу таблицу.