First: Please excuse my language: I'm not a native English speaker. Thank you! Problem While reworking multiple sheets to rely more on sheetworker scripts instead of auto-calculation fields, I noticed a problem with the setAttr silent:true &nbsp;setting. My goal is to make an event call a complex adjustment of statistics, which will alter a lot of attributes. However, only one of them should trigger an event. So - theoretically - I would call all the setAttrs with silent:true, &nbsp;and only one with silent:false. However, that does not work. Details The issue is, that when calling setAttrs with the silent:true &nbsp;parameter, having another setAttrs with silent:false &nbsp;deriving from the same function call will override it all the time. If you remove the silent:false &nbsp;from the single setAttrs call, everything goes silent again. This happens regardless of where the setAttr with silent:false &nbsp;is placed in context to the others. As long as the same original event cause the function chain, the silent:true &nbsp;will be overridden. This even holds true if you start two independent function chains by having two independent on:() &nbsp;event triggers, one starting an silent:true &nbsp;function chain, the other one calling the single silent:false &nbsp;chain. This is a major issue for creating complex statistic calculation scripts. It also makes the console log way more cluttered and requires a lot of additional coding, catching undesired events. It also increases the computation time required, since some instances are called multiple times. The good news: only actually executed setAttrs with silent:false &nbsp;adjust the behaviour. If one of those is inside an called function, but not executed (e.g. within a passed IF-Clause), the function does not force silent:false -behaviour. Known Workarounds I tried several scripting workarounds, but apart from moving changes into API-scripts, nothing short of a major overhaul of the logic and retaining sheet computations worked for me. However, when it comes to JavaScripting, I am not really a pro with lots of options at my disposal. So some recommendations are welcome. Moving my issue to the API will not solve the problem per se, as this sheet is planned to replace an (likely abandoned) Community sheet or be published individually. Forcing the use of API scripts isn't really an option. Browsers &amp; Settings The issue prevails in all browsers (Chrome, FireFox, Opera and Edge), regardless of add-ons. It works the same on production server and the sheet sandbox. Turning "Legacy Sanitation" on or off makes no difference. Example Game I have created a game where interested parties can check the issue with a console window. Simply open the character and the console, and try the buttons. The currently active code for the test is in the character's description as well. <a href="https://app.roll20.net/join/11958919/phKnlw" rel="nofollow">https://app.roll20.net/join/11958919/phKnlw</a> Please let me know if this kind of link isn't desired. I didn't find anything in the rules against creating such an easy-to-use bug display. Test Cases The following test cases are run by the buttons (from left to right, top to bottom): Test #1:&nbsp;Call silent setAttrs. Test #2:&nbsp;Call noisy setAttrs. Test #3:&nbsp;Call silent followed by noisy setAttrs in same action. Test #4: Call noisy followed by silent setAttrs in same action. Test #5:&nbsp;Call one noisy setAttrs calling an event. The event has two independent hooks (ON) calling a silent and a noisy setAttrs respectively. Test #6:&nbsp;Call two noisy setAttrs calling two independent events. One event calls a silent, one a noisy setAttrs. Code &lt;div&gt; &lt;div&gt; &lt;button type="action" name="act_test_1"&gt; &lt;label &gt;SetAttr Silent:true&lt;/label&gt; &lt;/button&gt; &lt;button type="action" name="act_test_2"&gt; &lt;label &gt;SetAttr Silent:false&lt;/label&gt; &lt;/button&gt; &lt;/div&gt; &lt;br&gt; &lt;div&gt; &lt;button type="action" name="act_test_3"&gt; &lt;label &gt;SetAttr Silent:true &amp; false&lt;/label&gt; &lt;/button&gt; &lt;button type="action" name="act_test_4"&gt; &lt;label &gt;SetAttr Silent:false &amp; true&lt;/label&gt; &lt;/button&gt; &lt;/div&gt; &lt;br&gt; &lt;div&gt; &lt;button type="action" name="act_test_5"&gt; &lt;label &gt;SetAttr Silent:true &amp; false in two different function chains triggered from same event&lt;/label&gt; &lt;/button&gt; &lt;/div&gt; &lt;br&gt; &lt;div&gt; &lt;button type="action" name="act_test_6"&gt; &lt;label &gt;SetAttr Silent:true &amp; false in two different function chains triggered from different event&lt;/label&gt; &lt;/button&gt; &lt;/div&gt; &lt;br&gt; &lt;div&gt; &lt;label&gt;Silent Event&lt;/label&gt; &lt;input type="text" class="" name="attr_event_1" placeholder="?" value=""/&gt; &lt;/div&gt; &lt;div&gt; &lt;label&gt;Noisy Event&lt;/label&gt; &lt;input type="text" class="" name="attr_event_2" placeholder="?" value=""/&gt; &lt;/div&gt; &lt;div&gt; &lt;label&gt;Change Event&lt;/label&gt; &lt;input type="text" class="" name="attr_event_3" placeholder="?" value=""/&gt; &lt;/div&gt; &lt;div&gt; &lt;label&gt;Change Event&lt;/label&gt; &lt;input type="text" class="" name="attr_event_4" placeholder="?" value=""/&gt; &lt;/div&gt; &lt;/div&gt; &lt;script type="text/worker"&gt; // Test #1: Call silent setAttrs. on('clicked:test_1', function(stat) { console.log('==&gt; Clicked Test #1: Silent'); console.log(' Test #1: Call silent setAttrs.'); setAttrs({['event_1']: Date.now() + ': Silent:TRUE. THIS SHOULD NOT HAPPEN!' }, {silent: true}); &lt;!-- setAttrs({['event_2']: Date.now() + ': Silent:FALSE. This is o.k.' --&gt; &lt;!-- }, {silent: false}); --&gt; }); // Test #2: Call noisy setAttrs. on('clicked:test_2', function(stat) { console.log('==&gt; Clicked Test #2: Noisy'); console.log(' Test #2: Call noisy setAttrs.'); &lt;!-- setAttrs({['event_1']: Date.now() + ': Silent:TRUE. THIS SHOULD NOT HAPPEN!' --&gt; &lt;!-- }, {silent: true}); --&gt; setAttrs({['event_2']: Date.now() + ': Silent:FALSE. This is o.k.' }, {silent: false}); }); // Test #3: Call silent followed by noisy setAttrs in same action. on('clicked:test_3', function(stat) { console.log('==&gt; Clicked Test #3: Silent &amp; Noisy'); console.log(' Test #3: Call silent followed by noisy setAttrs in same action.'); setAttrs({['event_1']: Date.now() + ': Silent:TRUE. THIS SHOULD NOT HAPPEN!' }, {silent: true}); setAttrs({['event_2']: Date.now() + ': Silent:FALSE. This is o.k.' }, {silent: false}); }); // Test #4: Call silent followed by noisy setAttrs in same action. on('clicked:test_4', function(stat) { console.log('==&gt; Clicked Test #4: Noisy &amp; Silent'); console.log(' Test #4: Call silent followed by noisy setAttrs in same action.'); setAttrs({['event_2']: Date.now() + ': Silent:FALSE. This is o.k.' }, {silent: false}); setAttrs({['event_1']: Date.now() + ': Silent:TRUE. THIS SHOULD NOT HAPPEN!' }, {silent: true}); }); // Test #5: Call one noisy setAttrs calling an event. The event has two independent hooks (ON) calling a silent and a noisy setAttrs respectively. on('clicked:test_5', function(stat) { console.log('==&gt; Clicked Test #5: different function chains from same trigger event'); console.log(' Test #5: Call one noisy setAttrs calling an event. The event has two independent hooks (ON) calling a silent and a noisy setAttrs respectively.'); setAttrs({['event_3']: Date.now() + ': change event test Silent &amp; Noisy' }, {silent: false}); }); // Test #6: Call two noisy setAttrs calling two independent events. One event calls a silent, one a noisy setAttrs. on('clicked:test_6', function(stat) { console.log('==&gt; Clicked Test #6: different function chains from different trigger events'); console.log(' Test #6: Call two noisy setAttrs calling two independent events. One event calls a silent, one a noisy setAttrs.'); setAttrs({['event_4']: Date.now() + ': change event test Silent.' }, {silent: false}); setAttrs({['event_5']: Date.now() + ': change event test Noisy.' }, {silent: false}); }); // Two attributes changes, one silent, one noisy on('change:event_1' , function(stat) { console.log('Event #1 (silent:TRUE) triggered with ' + stat.sourceAttribute + ' with ' + stat.newValue); }); on('change:event_2' , function(stat) { console.log('Event #2 (silent:FALSE) triggered with ' + stat.sourceAttribute + ' with ' + stat.newValue); }); // Simultaneous event triggers starting two individual function chains on('change:event_3' , function(stat) { console.log('Test #5 Change-Event #1 will call Event #1 Silent'); setAttrs({['event_1']: Date.now() + ': Silent:TRUE. THIS SHOULD NOT HAPPEN!' }, {silent: true}); }); on('change:event_3' , function(stat) { console.log('Test #5 Change-Event #2 will call Event #2 Noisy'); setAttrs({['event_2']: Date.now() + ': Silent:FALSE. This is o.k.' }, {silent: false}); }); // Simultaneous different event triggers starting two individual function chains on('change:event_4' , function(stat) { console.log('Test #6 Change-Event #1 will call Event #1 Silent'); setAttrs({['event_1']: Date.now() + ': Silent:TRUE. THIS SHOULD NOT HAPPEN!' }, {silent: true}); }); on('change:event_5' , function(stat) { console.log('Test #6 Change-Event #2 will call Event #2 Noisy'); setAttrs({['event_2']: Date.now() + ': Silent:FALSE. This is o.k.' }, {silent: false}); }); &lt;/script&gt; Console Output 17 Unchecked runtime.lastError: The message port closed before a response was received. ==&gt; Clicked Test #1: Silent Test #1: Call silent setAttrs. ==&gt; Clicked Test #2: Noisy Test #2: Call noisy setAttrs. Event #2 (silent:FALSE) triggered with event_2 with 1638490243625: Silent:FALSE. This is o.k. ==&gt; Clicked Test #3: Silent &amp; Noisy Test #3: Call silent followed by noisy setAttrs in same action. Event #1 (silent:TRUE) triggered with event_1 with 1638490244939: Silent:TRUE. THIS SHOULD NOT HAPPEN! Event #2 (silent:FALSE) triggered with event_2 with 1638490244939: Silent:FALSE. This is o.k. ==&gt; Clicked Test #4: Noisy &amp; Silent Test #4: Call silent followed by noisy setAttrs in same action. Event #2 (silent:FALSE) triggered with event_2 with 1638490246097: Silent:FALSE. This is o.k. Event #1 (silent:TRUE) triggered with event_1 with 1638490246097: Silent:TRUE. THIS SHOULD NOT HAPPEN! ==&gt; Clicked Test #5: different function chains from same trigger event Test #5: Call one noisy setAttrs calling an event. The event has two independent hooks (ON) calling a silent and a noisy setAttrs respectively. Test #5 Change-Event #1 will call Event #1 Silent Test #5 Change-Event #2 will call Event #2 Noisy Event #1 (silent:TRUE) triggered with event_1 with 1638490246933: Silent:TRUE. THIS SHOULD NOT HAPPEN! Event #2 (silent:FALSE) triggered with event_2 with 1638490246933: Silent:FALSE. This is o.k. ==&gt; Clicked Test #6: different function chains from different trigger events Test #6: Call two noisy setAttrs calling two independent events. One event calls a silent, one a noisy setAttrs. Test #6 Change-Event #1 will call Event #1 Silent Test #6 Change-Event #2 will call Event #2 Noisy Event #1 (silent:TRUE) triggered with event_1 with 1638490248245: Silent:TRUE. THIS SHOULD NOT HAPPEN! Event #2 (silent:FALSE) triggered with event_2 with 1638490248245: Silent:FALSE. This is o.k. I do wonder, what the errors mean... Thank you kindly. Edit: Cleansed the console output a bit. Edit 2: Came up with another test, which also failed. Added them and a better description here (see "Test Cases"). Edit 3:Forgot to mention: called functions with an setAttrs with silent:false &nbsp;which isn't executed (e.g. within if-clause but bypassed) do not force a silent:false -behaviour.