我是google脚本的新手,并且我一直在尝试使其成为一个脚本,因此当一个复选框设置为True时,另一个复选框将设置为False,onEdit。谁能告诉我该代码是什么样的?
答案 0 :(得分: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);
}
上面所选行的注释是,如果这是所选行,而不是所选列,并且选中了该行的所选列,则取消选中该列。
电子表格看起来像这样:
在此版本中,您可以使所有行都处于未选中状态,但是如果选中其中一个,则所有其他行都设置为未选中状态。您可以取消选中已选中的那一项,然后对该行全部取消选中。有很多方案,因此您只需要弄清楚要实现的逻辑即可。