'Private' 个单元格

'Private' cells

我想知道是否有任何方法可以在 Google 电子表格中 "give" 一个单元格给某人?我有一个电子表格,任何人都可以写他们想要的东西,任何人都可以编辑他们想要的东西。我想添加一个功能,使只有单元格的 "author" 可以编辑它。

例如 John Doe 在单元格 "B5" 中写入 "I want a banana"。 Jane Doe 在单元格 "B6" 中写入 "I want an apple"。约翰不想给简一个苹果,所以他编辑 "B6" 并将文本更改为“我不想要苹果。

我想阻止 John 编辑 Jane 的单元格。我想确保只有 John 可以编辑他的单元格,而 Jane 可以编辑她的单元格。我希望它自动发生。

有人知道我该怎么做吗?

手动方式

您可以继续保护单个范围

right click > Protect Range > Set Permissions > Restrict who can edit this range > Custom

并输入允许修改该单元格的电子邮件地址。

管理员群发方式

如果您想遍历一堆姓名和电子邮件地址,也可以在函数中执行此操作:

var ranges = [["A1", "someone@a.com"],
              ["A2", "someoneElse@b.com"]];

function setEditRights(){
  for (var i = 0; i < ranges.length; i++){
    protect(ranges[i][0], ranges[i][1]);
  }
}

function protect(range, emailAddress){ 
  SpreadsheetApp.getActiveSpreadsheet()
                .getActiveSheet()
                .getRange(range)
                .protect()
                .addEditor(emailAddress); 
}

自助服务方式

另一种选择是允许用户为自己保留单元格,您可以这样做:

function setAccess(){
  SpreadsheetApp.getActiveSpreadsheet()
                .getActiveSheet()
                .getActiveRange()
                .protect()
                .addEditor(Session.getActiveUser().getEmail()); 
}

具有添加菜单的功能

function onOpen(){
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Reserve a Range')
      .addItem('Reserve current Range', 'setAccess')
      .addToUi();
}

这将允许用户 select 一个单元格或范围并将其锁定为仅供他们自己和您作为所有者访问。然而,它基本上只是第一种方法的更方便的快捷方式。