Блокировать пользователей от редактирования собственной ячейки после ввода данных - PullRequest
0 голосов
/ 29 марта 2020

Я хочу заблокировать пользователям редактирование их собственного ввода. Прямо сейчас, когда владелец вводит данные в столбец, он блокируется для других пользователей, но когда другие пользователи вводят свои данные, он добавляет примечание через несколько секунд, но не блокирует ячейку для них.

`function onEdit(e) { 
  var active =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getCurrentCell();

  if(active.getColumn() == 5){
    active.protect().removeEditor("user email")
    active.setNote("Locked")};
}`

1 Ответ

1 голос
/ 30 марта 2020

Как указано в документации для метода removeEditor , текущий пользователь не может быть удален из защиты. Вы можете удалить все остальные редакторы из ячейки (исключая владельца листа и текущего пользователя) с помощью метода removeUsers . Если у листа также есть разрешение на редактирование домена, вы можете удалить его, используя метод setDomainEdit .

function onEdit(e) { 
  var active =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getCurrentCell();  
  var me = Session.getEffectiveUser();

  if(active.getColumn() == 5){
    var protection = active.protect();

    // This part is only needed if the cell/sheet has domain edit permission
    protection.addEditor(me);
    if (protection.canDomainEdit()) {
      protection.setDomainEdit(false);
    }

    protection.removeEditors(protection.getEditors());
    active.setNote("Locked")
  };
}
...