Возможно ли, чтобы один флажок включал / выключал другой? - PullRequest
0 голосов
/ 14 декабря 2018

Я новичок в скрипте Google, и я пытался сделать это так, когда один флажок установлен в True, другой флажок будет установлен в False, onEdit.Может ли кто-нибудь показать мне, как будет выглядеть этот код?

1 Ответ

0 голосов
/ 14 декабря 2018

Переключающие флажки

Вот функция 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;
}

Вот как выглядит электронная таблица:

enter image description here

enter image description here

  1. Документация GS
  2. Документация Javascript
  3. СобытиеОбъекты

Я поэкспериментировал с этим, и вот еще один способ сделать это с большим количеством столбцов:

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);
}

Комментарий для выбранной строки выше состоит в том, что еслиэто выбранная строка, и если это не выбранный столбец и выбранный столбец для этой строки отмечен, снимите флажок с этого столбца.

И таблица будет выглядеть примерно так:

enter image description here

В этой версии вы можете отключить все строки, но если вы отметите один, все остальные будут отключены.Вы можете снять галочку с отмеченного, и тогда все будут сняты для этого ряда.Существует множество сценариев, поэтому вам просто нужно выяснить логику, которую вы хотите реализовать.

...