2016-04-25 7 views
0

Ich versuche, Berechtigungen zum Aktualisieren von Zellen basierend auf der Spalte E-Mail-Adresse in der Tabelle festlegen. Zum Beispiel habe ich eine Zelle "B2", die gesperrt werden muss und sollte nur für die Änderung für den Benutzer zugänglich sein, der auf das Blatt mit der E-Mail-Adresse "[email protected]" zugreift, das als ein Zeilenwert auf demselben vorhanden ist Blatt. Die E-Mail-Adresse ist dieselbe E-Mail-Adresse, mit der der Benutzer das Blatt anzeigt. Bild unten gezeigt. Jede Hilfe oder Vorschläge sind willkommen. Vielen Dank!Sperren Sie Zellen und haben nur Benutzer mit bestimmten E-Mail-Adresse diese Zellen in Google-Tabelle aktualisieren

enter image description here

Antwort

0

Sie können dies erreichen mit dem protection class.

Hier ist ein Code, der gerade diese für Sie tun:

Dies wird die email Spalte nach unten gehen und einen geschützten Bereich auf der Zelle unmittelbar rechts neben der E-Mail-Adresse hinzufügen.

function ProtectRanges(){ 
    var ss = SpreadsheetApp.getActiveSheet() 
    var range = ss.getDataRange(); 
    var values = range.getValues(); 
    var columns = GetColumns(values, range.getNumColumns(), 0); //Get the column headers 

    for(var i = 1; i < values.length; i++){ 
    var email = values[i][columns.columns['email'].index]; //Get the email address from the 'email' columns 
    if(email !== ''){ 
     var rangeToProtect = ss.getRange(i+1, columns.columns['owner'].index + 1, 1, 1); //Get the range to protect, one cell over 
     rangeToProtect.protect().addEditor(email).setDescription("Only " + email + " has edit rights"); //Protect the range and add a description  
    } 
    } 
} 

//Gets a columns object for the sheet for easy indexing 
function GetColumns(valuesRange, columnCount, rowIndex) 
{ 
    var columns = { 
    columns: {}, 
    length: 0 
    } 

    Logger.log("Populating columns..."); 
    for(var i = 0; i < columnCount; i++) 
    { 
    if(valuesRange[0][i] !== ''){ 
     columns.columns[valuesRange[0][i]] = {index: i ,value: valuesRange[0][i]}; 
     columns.length++;  
    } 
    } 
    return columns; 
} 
+0

funktioniert super! Vielen Dank! – CarbonD1225

Verwandte Themen