2017-02-16 67 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我修改了代碼,試試通過我的測試表,希望你能掌握它。 –

相關問題