Разрешите устанавливать только один флажок, когда флажки помещены в определенные ячейки диапазона

#checkbox

Вопрос:

Пожалуйста, помогите мне. Мне нужен простой скрипт для Google таблиц, позволяющий одновременно проверять только один из 6 флажков

    function onEdit(e) {

   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var activeSheet = ss.getActiveSheet();
   var range = e.range;
   var CHECKBOX_CELLS = ["H1:H6"];
   var checkboxIndex = CHECKBOX_CELLS.indexOf(range.getA1Notation());

   if (activeSheet.getName() !== "TRIAL" VcheckboxIndex > -1 amp;amp; range.getValue() == true) 
   {
    var sheet = range.getSheet();

    for (var i=0; i<CHECKBOX_CELLS.length; i  ) {
    if (i==checkboxIndex) continue;

    sheet.getRange(CHECKBOX_CELLS[i]).setValue(false);
    }
 

Ответ №1:

В вашем сценарии checkboxIndex равно -1; затем вы должны изменить CHECKBOX_CELLS следующим образом

 function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet();
  var range = e.range;
  var CHECKBOX_CELLS = ['H1','H2','H3','H4','H5','H6'];
  var checkboxIndex = CHECKBOX_CELLS.indexOf(range.getA1Notation());
  if (activeSheet.getName() !== "TRIAL" amp;amp; range.getValue() == true) {
    var sheet = range.getSheet();
    for (var i=0; i<CHECKBOX_CELLS.length; i  ) {
      if (i!=checkboxIndex) sheet.getRange(CHECKBOX_CELLS[i]).setValue(false);
    }
  }
}
 

для всего столбца или части столбца

 function onEdit(e) {
  var s = e.source.getActiveSheet();
  var r = e.source.getActiveRange();
  var begin = 1;             // change as necessary
  var end = s.getLastRow();  // change as necessary
  var col = 8;               // H
  var row = r.getRow();
  if (s.getName()=="TRIAL" amp;amp;  row>=begin amp;amp; row<=end amp;amp; r.getColumn()==col amp;amp; r.getValue()) {
    var values = s.getRange(begin,col,end-begin 1,1).getValues()
    for (var i=0;i<values.length;i  ){
      values[i][0]=false
    }
    values[row-begin][0]=true
    s.getRange(begin,col,end-begin 1,1).setValues(values)
  }
}
 

Комментарии:

1. Спасибо, что если столбец H1:H, то есть весь столбец. как я буду справляться с этим в клетках Var CHECKBOX_CELLS

2. Майк, извини, что я выполнил этот код, но он не работал, я знаю, почему

3. вы дали разрешения? вот пример examplehttps://docs.google.com/spreadsheets/d/14wHUXMNTRQAxxsKN89gM1Rxw4qrmyOKVrhe8rEPmpBQ/edit?usp=sharing

4. для всего столбца просто укажите столбец … docs.google.com/spreadsheets/d/…

5. Извини, Майк, что, если я захочу использовать определенный лист, например «ПРОБНЫЙ». Как я с этим справлюсь