我是谷歌脚本的新手,我一直在努力做到这一点,所以当一个复选框设置为 True 时,另一个复选框将设置为 False,onEdit。谁能告诉我那个代码会是什么样子?
问问题
394 次
1 回答
1
切换复选框
这是一个 onEdit 函数,它将同一行中的复选框切换到相反的状态。本质上,它们的行为类似于每行上的单选按钮组。
function onEdit(e){
var rg=e.range;
var value=rg.getValue();
var ss=e.source;
var sh=rg.getSheet();
var name=sh.getName();
var col=rg.getColumn();
var row=rg.getRow();
if(name=='Sheet22' && (col==3 || col==1) && row>0 && row<16){//row>0 is not required unless you change the locations
//Logger.log('Row: %s Col:%s',row,col);
var hi=15;
var lo=1
var l=sh.getRange(lo,1,hi,1);
var m=sh.getRange(lo,2,hi,1);
var r=sh.getRange(lo,3,hi,1);
var mA=m.getValues();//Anything can be in this array as I wont be setting values in that range
switch(col){
case 1://left
lA=l.getValues();
for(var i=0;i<lA.length;i++){
mA[i][0]=lA[i][0]?false:true;
}
r.setValues(mA);
break;
case 3://right
rA=r.getValues();
for(var i=0;i<rA.length;i++){
mA[i][0]=rA[i][0]?false:true;
}
l.setValues(mA);
break;
}
}
return;
}
电子表格如下所示:
我不得不玩这个,这是另一种使用更多列的方法:
function onEdit(e){
var rg=e.range;
var value=rg.getValue();
var ss=e.source;
var sh=rg.getSheet();
var name=sh.getName();
var col=rg.getColumn();
var row=rg.getRow();
var rows=sh.getLastRow();
var cols=5;
var shName='Sheet22';
if(name==shName && col<=cols && row>1 && row<=rows){
Logger.log(col);
Logger.log(row);
var cRg=sh.getRange(2,1,rows,cols);
var cA=cRg.getValues();
for(var i=0;i<cA.length;i++){
for(var j=0;j<cols;j++){
if(row==i+2 && cA[i][col-1] && j!=col-1){//see comment below
cA[i][j]=false;
}
}
}
}
cRg.setValues(cA);
}
上面选定行的注释是,如果这是选定的行并且不是选定的列,并且选中了该行的选定列,则取消选中该列。
电子表格看起来像这样:
在此版本中,您可以将每一行全部取消选中,但如果您选中一个,则其他所有行都设置为未选中。您可以取消选中已选中的那个,然后该行的所有内容都将被取消选中。有很多场景,所以你只需要弄清楚你想要实现的逻辑。
于 2018-12-14T05:08:05.270 回答