Here's a more complex example. Imagine you have a system which has spells that go from level 1 to 9, and you have set up a different repeating section for each spell level. I've seen at least one sheet set up this way, so its not an unrealistic example. Now, the spells need to have a bonus calculated, and that is based on the stats int, wis, or cha. So every time one of those 3 stats change, your workers needs to check all spells to see which spell bonuses have changed. The sheet worker for level 1 spells might look like this: on ( `change:repeating_spells01 change:int change:wis change:cha` , () => { const statsallowed = [ 'int' , 'wis' , 'cha' ]; getSectionIDs ( 'repeating_spells01' , id_array => { const spells = []; id_array . forEach ( id => spells . push ( `repeating_spells01_ ${ id } _statbonus` )); getAttrs ([... spells , ... statsallowed ], values => { let output = {}; id_array . forEach ( id => { const stat = values [ `repeating_spells01_ ${ id } _statbonus` ]; output [ `repeating_spells01_ ${ id } _spellmodifier` ] = values [ stat ]; }); setAttrs ( output ); }); }); }); Explaining the forEach loop inside the getAttrs: each spell has a stat linked to it, and that name of that stat is stored in an attribute within the repeating section. Then the worker gets the value of the stat using that name, and stores it in the spellmodifer attribute for that stat. So far so good. The problem is, you need another worker for each level of spell. These means every time one of the 3 stats, you are doing 9 getAttrs and 9 setAttrs operations. That is very inefficient. One solution for this would be to convert it to a single worker that does all 9 spells at once. Unfortunately that looks something like this: on ( 'change:repeating_spells01 change:repeating_spells02 change:repeating_spells03 change:repeating_spells04 change:repeating_spells05' + 'change:repeating_spells06 change:repeating_spells07 change:repeating_spells08 change:repeating_spells09 change:int change:wis change:cha' , () => { const statsallowed = [ 'int' , 'wis' , 'cha' ]; const spells = []; const output = {}; getSectionIDs ( 'repeating_spells01' , ids_level01 => { ids_level01 . forEach ( id => spells . push ( `repeating_spells01_ ${ id } _statbonus` )); getSectionIDs ( 'repeating_spells02' , ids_level02 => { ids_level02 . forEach ( id => spells . push ( `repeating_spells02_ ${ id } _statbonus` )); getSectionIDs ( 'repeating_spells03' , ids_level03 => { ids_level03 . forEach ( id => spells . push ( `repeating_spells03_ ${ id } _statbonus` )); getSectionIDs ( 'repeating_spells04' , ids_level04 => { ids_level04 . forEach ( id => spells . push ( `repeating_spells04_ ${ id } _statbonus` )); getSectionIDs ( 'repeating_spells05' , ids_level05 => { ids_level05 . forEach ( id => spells . push ( `repeating_spells05_ ${ id } _statbonus` )); getSectionIDs ( 'repeating_spells06' , ids_level06 => { ids_level06 . forEach ( id => spells . push ( `repeating_spells06_ ${ id } _statbonus` )); getSectionIDs ( 'repeating_spells07' , ids_level07 => { ids_level07 . forEach ( id => spells . push ( `repeating_spells07_ ${ id } _statbonus` )); getSectionIDs ( 'repeating_spells08' , ids_level08 => { ids_level08 . forEach ( id => spells . push ( `repeating_spells08_ ${ id } _statbonus` )); getSectionIDs ( 'repeating_spells09' , ids_level09 => { ids_level09 . forEach ( id => spells . push ( `repeating_spells09_ ${ id } _statbonus` )); getAttrs ([... spells , ... statsallowed ], values => { ids_level01 . forEach ( id => { const stat = values [ `repeating_spells01_ ${ id } _statbonus` ]; output [ `repeating_spells01_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level02 . forEach ( id => { const stat = values [ `repeating_spells02_ ${ id } _statbonus` ]; output [ `repeating_spells02_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level03 . forEach ( id => { const stat = values [ `repeating_spells03_ ${ id } _statbonus` ]; output [ `repeating_spells03_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level04 . forEach ( id => { const stat = values [ `repeating_spells04_ ${ id } _statbonus` ]; output [ `repeating_spells04_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level05 . forEach ( id => { const stat = values [ `repeating_spells05_ ${ id } _statbonus` ]; output [ `repeating_spells05_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level06 . forEach ( id => { const stat = values [ `repeating_spells06_ ${ id } _statbonus` ]; output [ `repeating_spells06_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level07 . forEach ( id => { const stat = values [ `repeating_spells07_ ${ id } _statbonus` ]; output [ `repeating_spells07_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level08 . forEach ( id => { const stat = values [ `repeating_spells08_ ${ id } _statbonus` ]; output [ `repeating_spells08_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level09 . forEach ( id => { const stat = values [ `repeating_spells09_ ${ id } _statbonus` ]; output [ `repeating_spells09_ ${ id } _spellmodifier` ] = values [ stat ]; }); setAttrs ( output ); }); }); }); }); }); }); }); }); }); }); }); Caveat: there are more efficient ways to write this (especially to avoid the 9 forEach loops inside getAttrs) - but you cant avoid doing the 9 getSectionIDs, and thats the main point of this example. Writing - and reading - sheet workers like that is no fun. With OnyxRing's scripts, this can be rewritten as: on ( 'change:repeating_spells01 change:repeating_spells02 change:repeating_spells03 change:repeating_spells04 change:repeating_spells05' + 'change:repeating_spells06 change:repeating_spells07 change:repeating_spells08 change:repeating_spells09 change:int change:wis change:cha' , async () => { const statsallowed = [ 'int' , 'wis' , 'cha' ]; const spells = []; const output = {}; const ids_level01 = await getSectionIDsAsync ( 'repeating_spells01' ); const ids_level02 = await getSectionIDsAsync ( 'repeating_spells02' ); const ids_level03 = await getSectionIDsAsync ( 'repeating_spells03' ); const ids_level04 = await getSectionIDsAsync ( 'repeating_spells04' ); const ids_level05 = await getSectionIDsAsync ( 'repeating_spells05' ); const ids_level06 = await getSectionIDsAsync ( 'repeating_spells06' ); const ids_level07 = await getSectionIDsAsync ( 'repeating_spells07' ); const ids_level08 = await getSectionIDsAsync ( 'repeating_spells08' ); const ids_level09 = await getSectionIDsAsync ( 'repeating_spells09' ); ids_level01 . forEach ( id => spells . push ( `repeating_spells01_ ${ id } _statbonus` )); ids_level02 . forEach ( id => spells . push ( `repeating_spells02_ ${ id } _statbonus` )); ids_level03 . forEach ( id => spells . push ( `repeating_spells03_ ${ id } _statbonus` )); ids_level04 . forEach ( id => spells . push ( `repeating_spells04_ ${ id } _statbonus` )); ids_level05 . forEach ( id => spells . push ( `repeating_spells05_ ${ id } _statbonus` )); ids_level06 . forEach ( id => spells . push ( `repeating_spells06_ ${ id } _statbonus` )); ids_level07 . forEach ( id => spells . push ( `repeating_spells07_ ${ id } _statbonus` )); ids_level08 . forEach ( id => spells . push ( `repeating_spells08_ ${ id } _statbonus` )); ids_level09 . forEach ( id => spells . push ( `repeating_spells09_ ${ id } _statbonus` )); const values = await getAttrsAsync ([... spells , ... statsallowed ]); ids_level01 . forEach ( id => { const stat = values [ `repeating_spells01_ ${ id } _statbonus` ]; output [ `repeating_spells01_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level02 . forEach ( id => { const stat = values [ `repeating_spells02_ ${ id } _statbonus` ]; output [ `repeating_spells02_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level03 . forEach ( id => { const stat = values [ `repeating_spells03_ ${ id } _statbonus` ]; output [ `repeating_spells03_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level04 . forEach ( id => { const stat = values [ `repeating_spells04_ ${ id } _statbonus` ]; output [ `repeating_spells04_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level05 . forEach ( id => { const stat = values [ `repeating_spells05_ ${ id } _statbonus` ]; output [ `repeating_spells05_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level06 . forEach ( id => { const stat = values [ `repeating_spells06_ ${ id } _statbonus` ]; output [ `repeating_spells06_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level07 . forEach ( id => { const stat = values [ `repeating_spells07_ ${ id } _statbonus` ]; output [ `repeating_spells07_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level08 . forEach ( id => { const stat = values [ `repeating_spells08_ ${ id } _statbonus` ]; output [ `repeating_spells08_ ${ id } _spellmodifier` ] = values [ stat ]; }); ids_level09 . forEach ( id => { const stat = values [ `repeating_spells09_ ${ id } _statbonus` ]; output [ `repeating_spells09_ ${ id } _spellmodifier` ] = values [ stat ]; }); setAttrs ( output ); }); The 9 forEach loops at the end are still a bit clunky, and that code could be rewritten, but I wanted to avoid any more tricky techniques to keep the workers as simple to understand as possible. You should be able to see at a glance though how much more readable this code is compared to the previous worker.