Эта функция накладывает ограничение только на одну проверку на строку и 3 проверки на столбец. Необходимо указать параметр массива A1Notation string и имя листа. Если вы превысили пределы, последний флажок будет возвращен в ложь, и вы получите предупреждение в формате тоста.
function onEdit(e) {
const sh=e.range.getSheet();
if(sh.getName()=='You provide sheet name') {
const mcpr=1;
const mcpc=3;
const arrayrange='A1:C10';//You provide A1Notation range string
const arg=sh.getRange(arrayrange);
const avs=arg.getValues();
const ulr=arg.getRow();
const ulc=arg.getColumn();
const lrr=ulr+arg.getHeight()-1;
const lrc=ulc+arg.getWidth()-1;
if(e.range.columnStart<=lrc && e.range.rowStart<=lrr && e.value=="TRUE") {
let rc=avs[e.range.rowStart-ulr].filter(function(e){return e;}).reduce(function(a,v){ if(v){return a+1;} },0);
if(rc>mcpr){e.range.setValue("FALSE");e.source.toast('Sorry maximum checks per row is ' + mcpr);};
let cc=avs.map(function(r,i){return r[e.range.columnStart-ulc];}).filter(function(e){return e}).reduce(function(a,v){if(v){return a+1;}},0);
if(cc>mcpc){e.range.setValue('FALSE');e.source.toast('Sorry maximum checks per column is ' + mcpc);};
}
}
}
Анимация:
Методы массива
Блок событий onEdit
Ваши данные c case:
function onEdit(e) {
const sh=e.range.getSheet();
if(sh.getName()=='Sheet1') {
const mcpr=1;
const mcpc=3;
const arrayrange='D3:AC7';
const arg=sh.getRange(arrayrange);
const avs=arg.getValues();
const ulr=arg.getRow();
const ulc=arg.getColumn();
const lrr=ulr+arg.getHeight()-1;
const lrc=ulc+arg.getWidth()-1;
if(e.range.columnStart<=lrc && e.range.rowStart<=lrr && e.value=="TRUE") {
let rc=avs[e.range.rowStart-ulr].filter(function(e){return e;}).reduce(function(a,v){ if(v){return a+1;} },0);
if(rc>mcpr){e.range.setValue("FALSE");e.source.toast('Sorry maximum checks per row is ' + mcpr);};
let cc=avs.map(function(r,i){return r[e.range.columnStart-ulc];}).filter(function(e){return e}).reduce(function(a,v){if(v){return a+1;}},0);
if(cc>mcpc){e.range.setValue('FALSE');e.source.toast('Sorry maximum checks per column is ' + mcpc);};
}
}
}
Анимация:
![enter image description here](https://i.stack.imgur.com/HpP9K.gif)