Edit: This question got me banned from asking questions... what did I do wrong?! I really don't understand.
Edit: Solution this needed to be an onEdit() function. Thank you @cooper.
I am bashing my head against my keyboard. please help.
This seems like it should be simple... but I continue to get the error:
TypeError: Cannot read property 'getNumColumns' of undefined at onChange(checkBoxes:5:20)
The goal would be to click a check box, get a date stamp, but I need to also check the column header (Row 4) to determine what function to run next... However, I can not get that far because I need to know the column of the cell that triggered the function.
function onChange(e) {
const range = e.range;
Logger.log(range.getNumColumns());
};
/**Trigger:
Head:= Deployment
Event:= From spreadsheet - On change
Function:= onChange
Error rate:= 100% */
Technically speaking I can use activecell
but I am concerned that users are unreliable, what happens if they check a check box in col:1 then click to col:2, will activecell
return col:1, or 2?
I have tried a verity of combinations to solve this, but each time it says "Cannot read property 'getNumColumns' of undefined"
I have tried the following:
e.range.columnStart
CodePudding user response:
function onEdit(e) {
e.range is the location of the edit it could be more than one cell if it's something like a paste.
e.range.getSheet() is the sheet
e.range.columnStart is the column of the edited cell
e.range.rowStart is the row of the edited cell
e.range.columnEnd is the last column in e.range
e.range.rowEnd is the last row in e.range
e.source is the active spreadsheet
e.oldValue is the value before the change
e.value is the value after the edit
Logger.log(JSON.stringify(e)); //will provide a description of the entire event object
}
There are others like authorization level and user information sometimes