我想为特定用户有条件地格式化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");
希望有一天谷歌会允许这种条件格式化,但与此同时它将帮助我在拉丁美洲的学校减肥。
感谢您的考虑!
答案 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]);
要使其正常工作,您应首先在脚本编辑器中运行代码并对其进行授权。 TeacherName
和TeacherColor
应事先设置为命名区域。测试表是here。