class DynamicMenu {
constructor() {
const mySimpleParams = [["one", "1"], ["two", {aa: "objectparam"}], ["three", [["arrayParam"]]]]
this.createMenu = (ui) => {
const menu = ui.createMenu('My menu')
mySimpleParams.forEach(param=>{
const functionName = `function${param[0]}`
const entryName = `option-${param[0]}`
menu.addItem(entryName, `menuActions.${functionName}`)
})
menu.addToUi();
}
this.createActions = () => {
const menuActions = {}
mySimpleParams.forEach(param=>{
const functionName = `function${param[0]}`
menuActions[functionName] = function() {mayParametrizedFunction(param[1])}
})
return menuActions;
}
function mayParametrizedFunction(param) {
SpreadsheetApp.getUi()
.alert(`Got you folk!: ${param}`);
}
}
}
const menu = new DynamicMenu();
const menuActions = menu.createActions()
function onOpen() {
menu.createMenu(SpreadsheetApp.getUi())
}