/**
* @see https://developers.google.com/workspace/add-ons
*/
function onInstall(e) { onOpen(e); } // When the add-on is installed, trigger onOpen to set up the menu.
function onOpen(e) {
const ui = SpreadsheetApp.getUi(); // Get the user interface for the active spreadsheet.
const menu = ui.createAddonMenu(); // Create a custom add-on menu in the UI.
try {
if (!e || e.authMode === ScriptApp.AuthMode.NONE) { // Check if there's no event or minimal authorization mode.
menu.addItem("Basic Add-on Function", "auth_none_addon_function"); // Add limited-access menu option.
} else {
const properties = PropertiesService.getDocumentProperties(); // Access document-scoped properties.
const requiredProperty = properties.getProperty('requiredProperty'); // Try to get a required setting.
if (requiredProperty) {
menu.addItem("Configured Add-on", "properties_addon_function"); // Add menu if settings are found.
} else {
menu.addItem("Setup Required", "missing_properties_addon_function"); // Add menu if settings are missing.
}
}
} catch (error) {
menu.addItem("⚠️ Error Loading Menu", "handle_property_error"); // Fallback menu item if error occurs.
console.error("Menu creation error:", error); // Log the error to the Apps Script execution log.
}
menu.addToUi(); // Add the constructed menu to the spreadsheet UI.
}
function auth_none_addon_function() {
SpreadsheetApp.getUi().alert("Running basic add-on function with limited permissions."); // Show alert for limited function.
}
function properties_addon_function() {
SpreadsheetApp.getUi().alert("Running configured add-on function."); // Show alert for full-featured function.
}
function missing_properties_addon_function() {
SpreadsheetApp.getUi().alert("Required settings not found. Please configure the add-on."); // Show alert when setup is needed.
}
function handle_property_error() {
SpreadsheetApp.getUi().alert("An error occurred while loading properties. Please try again or check permissions."); // Show alert if property access fails.
}