2016-04-25 55 views
0

我試圖根據電子表格上的電子郵件地址列設置更新單元格的權限。例如,我有一個需要鎖定的單元格「B2」,並且應該只對用戶訪問電子郵件地址爲「[email protected]」的用戶進行修改時解鎖,該電子郵件地址在同一行上存在片。該電子郵件地址將是用戶用於查看錶單的相同電子郵件地址。圖像如下所示。歡迎任何幫助或建議。謝謝!鎖定單元格,並且只讓具有特定電子郵件地址的用戶更新Google電子表格中的這些單元格

enter image description here

回答

0

您可以用protection class實現這一目標。

下面是一些代碼,將做到這正好爲你:

這將下井email列,並添加受保護範圍內的單元格的電子郵件地址的直接權利。

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

很好用!謝謝! – CarbonD1225

相關問題