Как узнать, кто внёс изменения в таблицу?

Как создать скрипт для Google Sheets, который автоматически записывает имя пользователя, внесшего изменения в книгу, на определенном листе и в определенной ячейке? Требуется функционал, который будет идентифицировать пользователя, независимо от его роли в книге (например, владельцы, редакторы или только читатели), чтобы отслеживать авторство изменений. Любая помощь приветствуется, так как уже испробованы различные способы настройки доступа без успеха.
  • 1 мая 2024 г. 7:40
Ответы на вопрос 2
Для решения данной задачи в Google Sheets можно воспользоваться функцией onEdit(e). Ниже приведен пример скрипта, который будет записывать имя пользователя, внесшего изменения, в определенной ячейке на определенном листе:

```javascript
function onEdit(e) {
  var sheetName = "Sheet1"; // Название листа, на котором нужно отслеживать изменения
  var cellAddress = "A1"; // Адрес ячейки, куда нужно записывать имя пользователя
  
  var sheet = e.source.getSheetByName(sheetName);
  
  if (sheet.getName() == sheetName) {
    var user = Session.getActiveUser().getEmail();
    var range = sheet.getRange(cellAddress);
    range.setValue(user);
  }
}
```

Чтобы добавить этот скрипт в свою книгу Google Sheets, выполните следующие шаги:

1. Откройте свою книгу Google Sheets.
2. Нажмите на "Extensions" в верхнем меню, затем выберите "Apps Script".
3. В открывшемся окне скриптов напишите или вставьте предложенный выше скрипт.
4. Нажмите на кнопку "Save" или "Ctrl + S" для сохранения скрипта.
5. Закройте окно скриптов и вернитесь в свою книгу.

Теперь каждый раз, когда кто-то внесет изменения на листе "Sheet1", имя пользователя будет автоматически записываться в ячейку "A1". Пожалуйста, учтите, что этот скрипт будет работать только для изменений, внесенных после его добавления в книгу.
Никак. Это небезопасно. 

Вы можете идентифицировать пользователя только будучи администратором домена, которому принадлежит файл.

Вы можете назначать метки пользователям, добавляя какой-то уникальный идентификатор. Далее по этому идентификатору вы можете отслеживать пользователя через триггер, и, возможно, сможете узнать имя этого пользователя, если он сам признается.

Считаю подход нечестным, поэтому раскрывать реализацию не буду.
Похожие вопросы