And, now for the getSectionIDs bit. The wiki has a pretty good write up on how the function works. Essentially it iterates through all of the rows in a given section and calls a callback function that it passes an array of the row IDs. You will always want to use this before you do a getAttrs, as the IDs aren't that useful without also having the information on attributes in those rows. You can build an array of attribute names to get from the IDs. This looks like so: on('change:strength',(event)=>{
getSectionIDs('repeating_inventory',(idArray)=>{
const repeatAttributeNames = idArray.reduce((memo,id)=>{
memo.push(`repeating_inventory_${id}_weight`,`repeating_inventory_${id}_quantity`);
return memo;
},[]);
const getArray = ['strength','strength_mod',...repeatAttributeNames];
getAttrs(getArray,(attributes)=>{
//Do things with your attribute values.
});
});
}); If you need to get the row ids for multiple sections, you need to use multiple layers of getSectionIDs. I typically do this by iterating over them via a work queue (aka a burndown pattern). Since you're working on your own custom sheet, you might be interested in following my weekly sheet author tutorial, A Sheet Author's Journey . The next post will be out tomorrow! Hope that helps, Scott