2017-02-16 7 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"); 

Надеюсь, когда-нибудь Google позволит такого рода условного форматирования, но в то же время это поможет моей школе в Латинской Америке тонну.

Благодарим вас за рассмотрение!

ответ

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.

+0

Sangbok, приятно, что лист теста выделяется после редактирования, но похоже, что все изменения в желтом. Я надеялся, что некоторые народные правки появятся в определенных цветах. На вкладке «Панель управления» вы можете увидеть, что у меня есть список из 6 учителей. Вместо «Учителя № 1» у меня была бы электронная почта этого учителя. Я хотел бы посмотреть, кто редактирует листок и выполняет ли сценарий типа vlookup, который будет выделять любые желтые цвета, если они сделаны Учителем № 2 (но опять же, адрес электронной почты должен быть там, а не «Учитель # 2) Спасибо за то, что посмотрели! –

+0

@AaronSmith Я изменил код. Попробуйте его через свой тестовый лист. Надеюсь, вы получите его. –