This script tries to add or remove checkboxes from column A if columns B-D are populated or not. If every cell in those three columns of that row is populated then a checkbox is inserted in column A. If even one cell in those three columns of that row is not populated, then no checkbox is inserted.
column A = checkboxes
column B = title
column C = tstart
column D = tstop
function refreshCheckboxes(){
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet_name');
var rows = sheet.getDataRange().getValues();
var headers = rows.shift();
var checkbox = row[0]
var title = row[1];
var tstart = row[2];
var tstop = row[3];
for (var i = 0; i < rows.length; i++) {
if (rows[[title][tstart][tstop]] !== "") {
checkbox.insertCheckboxes();
} else {
checkbox.clearDataValidations();
checkbox.clearContent();
}
}
}
CURRENT OUTCOME:
ReferenceError: row is not defined is occurring when the row variables are being set. I'm not sure why I'm getting that error because I have similar functions that define the row variables in this way. My other worry with this script is about how columns B-D are set up. Is an array appropriate here and and is there an better way to set this up?
DESIRED OUTCOME:
To identify what is causing the row definition error and correct it. To verify if that AND() functionality works.
I already have an onEdit() that works perfectly other than it applying to only one row at a time thus I wanted to make a custom to run as needed.
Thanks!
Use and installable trigger and edit sheet name. I assumed one header row
Demo: