Переключающие флажки
Вот функция 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;
}
Вот как выглядит электронная таблица:
- Документация GS
- Документация Javascript
- СобытиеОбъекты
Я поэкспериментировал с этим, и вот еще один способ сделать это с большим количеством столбцов:
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);
}
Комментарий для выбранной строки выше состоит в том, что еслиэто выбранная строка, и если это не выбранный столбец и выбранный столбец для этой строки отмечен, снимите флажок с этого столбца.
И таблица будет выглядеть примерно так:
В этой версии вы можете отключить все строки, но если вы отметите один, все остальные будут отключены.Вы можете снять галочку с отмеченного, и тогда все будут сняты для этого ряда.Существует множество сценариев, поэтому вам просто нужно выяснить логику, которую вы хотите реализовать.