function onEdit(e) {
// Safety check for manual runs (exits if not triggered by an edit)
if (!e) {
console.log("No edit event detected. Exiting.");
return;
}
// Configuration (Match with your sheet and columns)
const CONFIG = {
sheetName: "Sales 2025", // Your sheet's name
titleColumn1: 7, // Column G (Title Part 1)
titleColumn2: 4, // Column D (Title Part 2)
dateColumn: 9, // Column I (Event Date)
checkboxColumn: 22, // Column V (Trigger Checkbox)
attendeeEmailColumn: 21 // Column U (Attendee Email)
};
// Get event details
const sheet = e.source.getActiveSheet();
const range = e.range;
const row = range.getRow();
const col = range.getColumn();
// Validate edit is on the correct sheet, column, and checkbox state
if (sheet.getName() !== CONFIG.sheetName ||
col !== CONFIG.checkboxColumn ||
e.value !== "TRUE") return;
// Retrieve data from the edited row
const dataRow = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
const title = `${dataRow[CONFIG.titleColumn1 - 1] || ""} - ${dataRow[CONFIG.titleColumn2 - 1] || ""}`.trim();
const attendeeEmail = dataRow[CONFIG.attendeeEmailColumn - 1]?.toString().trim();
const dateStr = dataRow[CONFIG.dateColumn - 1].toString().trim();
// Parse the date from "dd Mmm yyyy" format
function parseDate(dateStr) {
const [day, month, year] = dateStr.split(" ");
const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
return new Date(year, months.indexOf(month), day);
}
const eventDate = parseDate(dateStr);
// Create calendar event with attendee
try {
const calendar = CalendarApp.getCalendarById("calendarIDremoved");
const event = calendar.createAllDayEvent(title, eventDate);
// Add attendee if email is present
if (attendeeEmail) {
event.addGuest(attendeeEmail);
}
// Uncheck the trigger box to prevent re-triggering
range.setValue(false);
// Debug log (check View > Logs in Apps Script editor)
console.log(`Event created: ${event.getTitle()} on ${eventDate}`);
if (attendeeEmail) {
console.log(`Attendee added: ${attendeeEmail}`);
} else {
console.log("No attendee email provided.");
}
} catch (error) {
console.error(`Error creating event: ${error.message}`);
}
}