Hi LU MASTER, the structure of your sheetworker looks good to me other than you might want to stick to all lowercase attribute names in the event listener. ie on('change: ...') That could cause problems triggering events in the past but I'm not sure if it's still an issue. Make sure none of the attributes used in this worker are set to disabled in the HTML? (use readonly instead) Do the inputs have names, types, and values? Are these all non-repeating attributes? I'll often use logs in my code when developing to see what's happening ie console.log(`Change Detected:${eventInfo.sourceAttribute}`); Logs will help determine if the listener is being triggered or not and/or if there is an issue further into your worker, like it's not getting all the values from the attributes. Actually there may be an issue with your variable declarations. Try declaring them separately (may work with commas after each instead of ; as well but I like declaring them on separate lines to help easily see what they are) Also, getAttrs parameter 'values' in needs to have parenthesis. ie (values) Try this (remove/comment out logs after you get things working) on('change:ppiu change:p change:m change:l change:n', (event) => { console.log(`Change Detected:${event.sourceAttribute}`); getAttrs(['Ppiu', 'P', 'M', 'L', 'N'], (values) => { const Ppiu = parseInt(values.Ppiu) || 0; const P = parseInt(values.P) || 0; const M = parseInt(values.M) || 0; const L = parseInt(values.L) || 0; const N = parseInt(values.N) || 0; const slot_total = Math.floor(Ppiu / 2)+P+(M*2)+(L*2)+(N*3); console.log(`Ppiu:${Ppiu} P:${P} M:${M} L:${L} N:${N} slot_total:${slot_total}`); setAttrs({ slot_total: slot_total, }); }); });