I'd like an email to be sent whenever a checkbox is checked in a google sheet. Does anyone have good code I can use?
Example: like when column F check box have been checked it will auto send an email like attached picture.
Sorry as i totally noob about scripts and don't no where to start.
CodePudding user response:
Send Email When Check Box in A1 Is Checked
function sendEmailWhenCheckBoxIsChecked(e) {
const sh = e.range.getSheet();
if(sh.getName() == 'Send Emails' && e.range.columnStart==1 && e.range.rowStart == 1 && e.value == "TRUE") {
e.range.setValue('FALSE');
GmailApp.sendEmail("your email addres","The subject","The message");
}
}
Create installable trigger
function createTriger() { if(ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() == 'sendEmailWhenCheckBoxIsChecked').length ==0) { ScriptApp.newTrigger('sendEmailWhenCheckBoxIsChecked').forSpreadsheet(ss.getActive()).onEdit().create(); } }
CodePudding user response:
This runs with an installable trigger. If you don't want an installable trigger, you can change the function sendEmailWhenBoxIsChecked()
to onEdit()
, delete the onOpen()
function and get rid of wholeSheet
variable.
Let me know if you have any questions.
const wholeSheet = SpreadsheetApp.getActive();
let sheetName = "name of your sheet";
let activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
function sendEmailWhenBoxIsChecked() {
let columnIndexOfCheckbox = 6; //column index of where your checkbox is located
let rowIndexOfCheckbox = 2; //column index of where your checkbox starts
let activeCellOfActiveSheet = activeSheet.getActiveCell();
if (
activeCellOfActiveSheet.getColumn() === columnIndexOfCheckbox
&& activeCellOfActiveSheet.getRowIndex() >= rowIndexOfCheckbox
&& !activeCellOfActiveSheet.isBlank()
) {
let checkbox = activeSheet.getActiveCell();
if (checkbox.isChecked()) {
GmailApp.sendEmail("recipient email", "Email header", "Email content or body");
}
}
}
function onOpen() {
let createTrigger = true;
ScriptApp.getProjectTriggers().forEach(trigger => {
if (trigger.getEventType() === ScriptApp.EventType.ON_EDIT && sendEmailWhenBoxIsChecked.name === trigger.getHandlerFunction()) createTrigger = false;
});
if (createTrigger) {
ScriptApp.newTrigger(sendEmailWhenBoxIsChecked.name)
.forSpreadsheet(wholeSheet)
.onEdit()
.create();
}
}