JSON formatting to show field value that’s hidden by default?

I have a number of “utility” columns in my SharePoint online list that are used by the JSON in other columns (for example, I need to check that the “Email1” column is populated before I make the “Send Email” button visible). I can’t exclude them from the view, or the JSON doesn’t seem to work. But the users don’t usually need to see them, so I’d like to keep them out of the way as much as I can.

I’ve taken a couple of steps that help, like moving all of the utility fields to the far right-hand end of the view so that the ones people actually need are grouped first, with the others grouped after. But I’d also like to reduce the column widths, if possible, and ideally just hide the contents of each field unless the user takes an action to view it.

My temporary (ugly) hack was to use this to just make the font super-small:

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "txtContent": "@currentField",
  "style": {
    "font-size": "2pt",
    "background-color": "lightgrey"
  }
}

So I can make the columns narrow:

enter image description here

Is there a way to either:

  1. Force the column width to be very narrow and prevent any text from wrapping (so we don’t just trade wide for tall), even if it means the text isn’t all visible in the field
  2. Hide the text and use an icon or something to only display the contents when the user takes an action to do that

Or is there something I’m missing in how I have my JSON coded… can I keep a column out of my view, but still refer to the contents of that column in the JSON for a column that is displayed? So, if my JSON formatting for my “Send Notification” column checks the value of the Recipients field in my screenshot, is there a way to make that work without having Recipients included in my view?