2017-02-16 82 views
1

我想为特定用户有条件地设置Google表格。基本上,#1老师的编辑会显示黄色,而#2老师是绿色的。不幸的是,表格中的“条件格式”工具没有这个选项。保护某些细胞不会工作,因为编辑们的变化是有规律的。我只想看看编辑,而不是限制他们。另一个建议应该是使用“修订历史记录”选项..但这对于使用多个表单(几个编辑者可以访问)在几个月内找到某个编辑器的更改似乎并不实际。Google表格:突出显示某些用户的编辑

所以我想去的方向是使用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

代码的第一行应该是:

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

+0

Sangbok,编辑后的测试表突出显示,不过看起来每个人的编辑都是黄色的。我的希望是某些人的编辑以某种颜色显示。在“控制面板”选项卡中,您可以看到我有6位教师的列表。而不是“老师#1”,我会有那个老师的电子邮件。我想要的是查看并查看谁在编辑表单,并执行一个vlookup类型的脚本,如果由#2教师创建,则会突出显示编辑黄色(但是,电子邮件地址必须位于该位置,而不是“Teacher# 2)。谢谢你的采访! –

+0

@AaronSmith我修改了代码,试试通过我的测试表,希望你能掌握它。 –

相关问题