0
我试图根据电子表格上的电子邮件地址列设置更新单元格的权限。例如,我有一个需要锁定的单元格“B2”,并且应该只对用户访问电子邮件地址为“[email protected]”的用户进行修改时解锁,该电子邮件地址在同一行上存在片。该电子邮件地址将是用户用于查看表单的相同电子邮件地址。图像如下所示。欢迎任何帮助或建议。谢谢!锁定单元格,并且只让具有特定电子邮件地址的用户更新Google电子表格中的这些单元格
我试图根据电子表格上的电子邮件地址列设置更新单元格的权限。例如,我有一个需要锁定的单元格“B2”,并且应该只对用户访问电子邮件地址为“[email protected]”的用户进行修改时解锁,该电子邮件地址在同一行上存在片。该电子邮件地址将是用户用于查看表单的相同电子邮件地址。图像如下所示。欢迎任何帮助或建议。谢谢!锁定单元格,并且只让具有特定电子邮件地址的用户更新Google电子表格中的这些单元格
您可以用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;
}
很好用!谢谢! – CarbonD1225