Conditional formatting formula stops matching a sticky in a Dynamic Table row after its text is edited
Summary
I'm using a formula-based conditional formatting rule to color sticky notes by the Dynamic Table row they sit in. The rule works when a sticky is dragged into a row, but the color is lost as soon as the sticky's text is edited. The sticky is still visually in the same row.
What I'm trying to do
Color stickies by row name (Goal, Stories, Alt. Stories, Notes) across multiple copies of the same table, so I need a rule that matches by row label and not by a specific container. Shape location rules are tied to one container, so they don't carry over to copies.
Rule (If, with And Shape type is Sticky)
COUNT(FILTER(CONTAINEDBY[2].$rows, r => AND(TRIM(r) = "Goal", COUNT(FILTER(r.$contents, c => c.$id = THIS.$id)) > 0))) > 0
Then: Custom shape style (fill color). Same pattern as Else if for the other rows. (CONTAINEDBY[2] is the table because it sits inside a frame; without a frame it is [1].)
Steps to reproduce
1. Create a Dynamic Table with rows and apply the rule above.
2. Drag a sticky into the Goal row. It takes the Goal color.
3. Edit the sticky's text. The color is lost.
4. The color returns if I hide and show the rules, or drag the sticky out of the table and back in.
Expected: the sticky keeps its color after an edit, since it is still in the same row.
Actual: the color is lost after the edit and does not return until the rules are refreshed or the sticky is re-dragged.
What I narrowed down
I split the formula into separate conditions, each shown as its own badge rule, and checked which ones survive an edit:
- COUNT(CONTAINEDBY) > 0: stays true after the edit
- COUNT(CONTAINEDBY[2].$rows) > 0: stays true after the edit
- COUNT(FILTER(CONTAINEDBY[2].$rows, r => TRIM(r) = "Goal")) > 0: stays true after the edit
- COUNT(FILTER(CONTAINEDBY[2].$rows, r => COUNT(FILTER(r.$contents, c => c.$id = THIS.$id)) > 0)) > 0: true when the sticky is dragged in, false after its text is edited
- The same check using c = THIS instead of c.$id = THIS.$id: fails the same way
So the table and row lookups are fine. The only part that breaks is whether the row's $contents still includes the edited sticky. One of my test stickies also failed this check right after being added, possibly because it was created by typing inside the table, which would count as an edit.
Also checked: ATTRIBUTES(THIS) on a sticky inside the table returns the same attributes as outside it (id, itemcreatedby, itemcreatedtime, itemlastmodifiedby, itemlastmodifiedtime, tags), so there is no attribute on the sticky that points to its row.
Questions
1. Is this a known issue? Does $contents on a Dynamic Table row stop including a sticky after its text is edited?
2. Is there a supported way to make a rule match a sticky to its Dynamic Table row by row label that survives edits and works across copies of the table?
3. If not, can this be considered a bug or feature request?
Thanks!