我想知道是否有任何方法可以将单元格“提供”给Google Spreadsheet中的某个人?我有一个电子表格,任何人都可以写他们想要的东西,任何人都可以编辑他们想要的东西。我想添加一个函数,使得只有单元格的“作者”才能对其进行编辑。

例如。
John Doe在单元格“ B5”中写了“我想要一个香蕉”。 Jane Doe在单元格“ B6”中写了“我想要一个苹果”。约翰不想给简给苹果,所以他编辑了“ B6”并将文本更改为“我不想要苹果。

我要防止约翰编辑Janes单元格。我想确保只有John可以编辑他的单元格,而Jane可以编辑她的单元格。我希望它能够自动发生。

有人知道我该怎么做吗?

最佳答案

手动方式

您可以通过继续保护单个范围


  右键单击>保护范围>设置权限>限制谁可以编辑
  此范围>自定义


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

管理员批量方式

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

var ranges = [["A1", "[email protected]"],
              ["A2", "[email protected]"]];

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();
}


这将允许用户选择一个单元格或范围并将其锁定,以供自己和作为所有者的您访问。但是,从根本上讲,它只是第一种方法的一种更方便的快捷方式。

08-25 13:26