Google Apps脚本,允许编辑者编辑某些受保护的单元格

时间:2018-07-14 05:05:05

标签: google-apps-script google-sheets

我的代码确实需要帮助。我和我的其他一些朋友一起做的是兼职工作。每周,我都会创建一张工作表,并让我的朋友根据他们所辅导的人群填写专栏。因为有时我的一些朋友错误地填写了错误的列,所以我保护了这些列并允许他们通过保护不应填充的每个单元格来编辑各自的列。因为这太繁琐了,所以每周都要做,所以我想写一个代码,这样在我运行它时,它将看到哪个编辑器正在访问该工作表并保护除要编辑的单元格以外的所有其他单元格。以下是我无法执行的类似代码。单元格,单元格1和单元格2代表三个不同的人组,每个单元格列出1条电子邮件,但单元格2由两封电子邮件组成。这些电子邮件代表了将数据输入到其相应列的编辑者(该教师指导各自的人员)。范围,范围1和范围2由教师需要填写的单元格组成。我几乎没有编码知识,这就是我可以找到或学习到的东西。如果有人可以帮助我编辑我的代码,而我却不知所措,我对此深表感谢。

function onOpen() {

  var ss = SpreadsheetApp.getActive();
  var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test 3");
  var email = Session.getActiveUser().getEmail();
  var cell = source.getRange("A6").getValue();
  var cell1 = source.getRange("C6").getValue();
  var cell2 = source.getRange("E6:E7").getValue();
  var range = ss.getRange('H5:H20');
  var range1 = ss.getRange('J5:J20');
  var range2 = ss.getRange('L5:L20');

  if (cell == email) {

    // Remove protection if cell 'A6' is email@gmail.com
  var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);

  for (var i = 0; i < protections.length; i++) {
  var protection = protections[i];
  protection.remove();
   } 
  }else {

    // Protect range H5:H20 if cell 'A6' is not email@gmail.com
    var protection = range.protect().setDescription('Sample protected range');
    Logger.log

    }

  if (cell1 == email) {

    // Remove protection if cell 'C6' is email1@gmail.com
  var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);

  for (var i = 0; i < protections.length; i++) {
  var protection = protections[i];
  protection.remove();

   } 
  }else {

    // Protect range H5:H20 if cell 'C6' is not email1@gmail.com
    var protection = range.protect().setDescription('Sample protected range');
    Logger.log
    }
  if (cell2 == email) {

    // Remove protection if cell 'C6' is email2@gmail.com
  var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);

  for (var i = 0; i < protections.length; i++) {
  var protection = protections[i];
  protection.remove();

   } 
  }else {

    // Protect range H5:H20 if cell 'C6' is not email2@gmail.com
    var protection = range.protect().setDescription('Sample protected range');
    Logger.log
    }
  } 

0 个答案:

没有答案