【发布时间】:2017-07-24 00:48:27
【问题描述】:
我有这个脚本,我用它来复制(将公式转换为值),然后当用户在末尾的某个单元格(A2、A6 等)中输入值“Burned”时保护范围每个月(不能让它按日期触发,因为用户可能在稍微不同的日期完成数据输入)。电子表格需要用户每个月锁定数据,因此设置脚本以在用户每个月输入“Burned”时转换和保护每个月的数据。该脚本可以很好地将公式转换为值,并且还可以保护范围。但是,每次我编辑工作表时,它都会创建重复的受保护范围,因此我最终会得到多个受保护范围,称为 January Burned、February Burned 等。有没有办法防止脚本复制受保护范围?非常感谢任何帮助。
function onEdit(e)
//January
{
var ss = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Caseload");
var valueToCheckA = sheet.getRange("A2").getValue();
var rangeA = sheet.getRange("A2:AZ5");
{
if(valueToCheckA == "Burned")
{
rangeA.copyTo(rangeA, {contentsOnly:true});
var protection = rangeA.protect().setWarningOnly(true).setDescription('January Burned');
}
}
}
//February
{
var ss = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Caseload");
var valueToCheckB = sheet.getRange("A6").getValue();
var rangeB = sheet.getRange("A6:AZ9");
{
if(valueToCheckB == "Burned")
{
rangeB.copyTo(rangeB, {contentsOnly:true});
var protection = rangeB.protect().setWarningOnly(true).setDescription('February Burned');
}
}
}
//March
{
var ss = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Caseload");
var valueToCheckC = sheet.getRange("A10").getValue();
var rangeC = sheet.getRange("A10:AZ13");
{
if(valueToCheckC == "Burned")
{
rangeC.copyTo(rangeC, {contentsOnly:true});
var protection = rangeC.protect().setWarningOnly(true).setDescription('March Burned');
}
}
}
【问题讨论】:
标签: javascript google-apps-script duplicates range