#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. Извини, Майк, что, если я захочу использовать определенный лист, например «ПРОБНЫЙ». Как я с этим справлюсь