Google表格:突出显示某些用户'编辑

时间:2017-02-16 20:28:41

标签: google-sheets

我想为特定用户有条件地格式化Google表格。基本上,教师#1的编辑将显示为黄色,而教师#2编辑为绿色。不幸的是"条件格式" Sheets中的工具没有此选项。由于编辑器的变化规律性,保护某些单元格不起作用。我只是想看编辑,而不是限制它们。另一个建议应该是使用"修订历史"选项......但是,使用多张工作表(几位编辑可以访问)在几个月内找到某个编辑器的更改似乎并不合适。

所以我想要的方向是使用OnEdit触发器来捕获电子邮件(所有用户必须登录),然后突出显示上一次编辑。

Here is the URL for a public Google Sheet I duplicated。在那里,您将看到许多周表中的一个。然后有一个控制面板,其颜色与每个用户(教师)相关联。

我从another StackOverflow forum复制了一些脚本以开始使用。

function setActiveUser() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  // GET EMAIL ADDRESS OF ACTIVE USER
  var email = Session.getActiveUser().getEmail();
  Logger.log(email);

  //HIGHLIGHT LAST EDITED CELL BASED ON OF ACTIVE USER'S PREDETERMINED COLOR
  sheet.getRange(here is where I need to locate last edited cell).setBackgroundColor("here is where I need to color it based on the "Control Panel" sheet colors");

希望有一天谷歌会允许这种条件格式化,但与此同时它将帮助我在拉丁美洲的学校减肥。

感谢您的考虑!

1 个答案:

答案 0 :(得分:1)

代码的第一行应该是:

function onEdit() {

最后一行应该是这样的:(编辑)

  //HIGHLIGHT LAST EDITED CELL BASED ON OF ACTIVE USER'S PREDETERMINED COLOR
  var teacherName = ss.getRangeByName("TeacherName").getValues().map(function(array) { return array[0]; });
  var teacherColor = ss.getRangeByName("TeacherColor").getValues().map(function(array) { return array[0]; });
  var nameIdx = teacherName.indexOf(email);
  if(nameIdx > -1)
    sheet.getActiveCell().setBackground(teacherColor[nameIdx]);

要使其正常工作,您应首先在脚本编辑器中运行代码并对其进行授权。 TeacherNameTeacherColor应事先设置为命名区域。测试表是here