Google apps script 谷歌表单-在达到值后锁定单元格,还有一件事
为我的同事制作一个自我安排的电子表格。他们的目标是将自己的小时数(12或6)放在与日期和姓名对应的单元格中。我试图让它,以便日期列将锁定后,该列的总和单元格达到一定的总数 我用这个()作为我的基础,但我运气不太好Google apps script 谷歌表单-在达到值后锁定单元格,还有一件事,google-apps-script,google-sheets,Google Apps Script,Google Sheets,为我的同事制作一个自我安排的电子表格。他们的目标是将自己的小时数(12或6)放在与日期和姓名对应的单元格中。我试图让它,以便日期列将锁定后,该列的总和单元格达到一定的总数 我用这个()作为我的基础,但我运气不太好 function myFunction() { function onOpen() { var ss = SpreadsheetApp.getActive(); var source = SpreadsheetApp.getActiveSpreadsheet().
function myFunction() {
function onOpen() {
var ss = SpreadsheetApp.getActive();
var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var cell = source.getRange("B12").getValue();
var range = ss.getRange("B2:B11");
if (cell == 10) {
// Protect range B2:B11 if cell 'B12' = 10
var protection = range.protect().setDescription('Sample protected range');
Logger.log
} else {
// Remove protection if cell 'B12' is anything other than 10
var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
var protection = protections[i];
protection.remove();
}
}
}
}
函数myFunction(){
函数onOpen(){
var ss=SpreadsheetApp.getActive();
var source=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”);
var cell=source.getRange(“B12”).getValue();
var范围=ss.getRange(“B2:B11”);
如果(单元格==10){
//如果单元“B12”=10,则保护范围B2:B11
var protection=range.protect().setDescription('Sample protected range');
Logger.log
}否则{
//如果单元格“B12”不是10,请移除保护
var保护=ss.getProtections(电子表格应用程序保护类型范围);
对于(变量i=0;i<0.length;i++){
无功保护=保护[i];
保护。移除();
}
}
}
}
我也希望总和代表大便而不是小时,因此如果一个人写“12”,总和栏将记录“1”
任何帮助都会令人惊讶。你应该改变一些事情
myFunction
内部嵌套onOpen
-它将不起作用B12
时更新保护,则应使用onEdit
触发器,而不是onOpen
单元格==10
替换为单元格>=10
,以考虑该值意外超出最大值的可能性
4.仅仅创造一种保护是不够的,要使它有用,你需要从中吸取教训function bindAnOnEditTiggerToMe() {
var ss = SpreadsheetApp.getActive();
var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var cell = source.getRange("B12").getValue();
var range = ss.getRange("B2:B11");
if (cell >= 10) {
// Protect range B2:B11 if cell 'B12' = 10
var protection = range.protect().setDescription('Sample protected range');
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
protection.setDomainEdit(false);
}
} else {
// Remove protection if cell 'B12' is anything other than 10
var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
var protection = protections[i];
protection.remove();
}
}
}
函数bindanoneditiggertome(){
var ss=SpreadsheetApp.getActive();
var source=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”);
var cell=source.getRange(“B12”).getValue();
var范围=ss.getRange(“B2:B11”);
如果(单元格>=10){
//如果单元“B12”=10,则保护范围B2:B11
var protection=range.protect().setDescription('Sample protected range');
var me=Session.getEffectiveUser();
保护。加法器(me);
protection.removeditors(protection.getEditors());
if(protection.canDomainEdit()){
protection.setDomainEdit(false);
}
}否则{
//如果单元格“B12”不是10,请移除保护
var保护=ss.getProtections(电子表格应用程序保护类型范围);
对于(变量i=0;i<0.length;i++){
无功保护=保护[i];
保护。移除();
}
}
}