So the code looks like this: // spellRingConversion getSectionIDs('repeating_spells', function (idArray) { getAttrs(idArray.map(id => `repeating_spells_${id}_spellRing`), function (values) { console.log(values); // Logging all the spellRing key:value pairs from the old sheet console.log(idArray); // logging all row ids. Those missing from the values object above don't have a spellRing // attribute set, so they should default to air let setting = {}; idArray.forEach(function (id) { switch (values[`repeating_spells_${id}_spellRing`]) { case '@{Void}': setting[`repeating_spells_${id}_spell_ring`] = '@{foo_void}'; break; case '@{Water}': setting[`repeating_spells_${id}_spell_ring`] = '@{foo_water}'; break; case '@{Fire}': setting[`repeating_spells_${id}_spell_ring`] = '@{foo_fire}'; break; case '@{Earth}': setting[`repeating_spells_${id}_spell_ring`] = '@{foo_earth}'; break; default: setting[`repeating_spells_${id}_spell_ring`] = '@{foo_air}'; // defaulting to air in case the select was never changed } }); console.log(setting); // Logging the attributes we are about to set. setAttrs(setting); }); }); One day, I saw something in the console. Since then, it hasn't logged anything, and I have no idea why. Now the only clue I have is this line: FILLED IN A DEFAULT VALUE FOR repeating_spells_-KkLyf2GvtxzhbIszMJj_spell_ring The only thing anywhere near it are a bunch of triggering commands.