Задать вопрос
@group47

Какой Скрип для записи последних действий в документе можно использовать?

Нужен скрипт, который будет на определенном листе записывать хронологию действий произведенных в документе.

На каждой строчке поочередно записывается:
- время произведенного действия
- почта редактора (кто внес изменение)
- лист где произошло изменение
- ячейка, которая была отредактирована
- !!!! По возможности скопировать значение, которое туда внес пользователь. (Например было написано в какой то ячейке значение «123», а он вписал новое значение «456».)

Тем самым, я всегда узнаю кто, что, когда и куда вносил изменения.

Т.е. , если в документе кто то откроет какой-нибудь существующий лист и внесет какое либо изменение в любую ячейку, скрипт автоматически соберет информацию на отдельном листе (пусть будет лист А) и запишет все основные сведения об изменении (которые я расписал выше).
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Apps Script
Учитель, автоэлектрик, программист, музыкант
/**
 * Возникает при изменении ячейки
* @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
 * [ ProgrammerForever (c) 2020 ]
 * @return Не возвращает значений
 */
function onEdit(event) {
  var as = event.source.getActiveSheet();//Текущий лист
  var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
  var row = event.range.getRow();      //Номер строки
  var col = event.range.getColumn();  //Номер столбца
  var newValue = event.value;            //Новое значение
  var oldValue = event.oldValue;        //Старое значение
  var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
  
  let archiveSheetName = "sheet";
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  let archiveSheet = ss.getSheetByName(archiveSheetName) || ss.insertSheet(archiveSheetName);
  archiveSheet.appendRow([new Date(), userEmail, as.getName(), address, oldValue, newValue]);
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы