You're understanding the purpose of the Hidden and Invisible fields correctly and your desired workflow is possible.
Let's step through each part:
Hidden and Invisible Fields
These fields allow you to capture values on the page that the user doesn't see. This includes any variable available to the page your form is being submit on. The key thing to note is that by default, all variables may not be available and for some variables, you will have to take an extra step to make them available.
By default, the only dynamic variables available to the Hidden and Invisible fields are variables that are global in scope like {{ craft.request.path }}
or something like that. To make an entry
variable available, you will need to use the addFieldVariables tag on your page:
{# This line makes the entry variable available to your
Hidden and Invisible Field settings. #}
{% do craft.sproutForms.addFieldVariables({ entry: entry }) %}
{# After you use addFieldVariables, you can display your Form as normal #}
{{ craft.sproutForms.displayForm('contact') }}
With the code above in place, you can now use any values that you want from the entry
in your Hidden or Invisible Field Settings like {{ entry.title }}
, {{ entry.postDate|date('Y-m-d) }}
, {{ entry.excerpt }}
or even loop through an array of data like Entries or Users, just like you would in your Twig template (as long as your final value can be stored in a PlainText field.
Dynamically access form data with Sprout Email
To send this information in a notification email, you'll first need to setup a new Notification in Sprout Email and select the rule "When a Sprout Forms entry is saved".
When your form is submitted, your Sprout Email template will have your entire SproutForms_Entry
object and all of the submitted fields available to it via the object variable.
So, while your entry values were available to your form as:
{{ entry.title }}
{{ entry.postDate|date('Y-m-d) }}
{{ entry.excerpt }}
They will be available dynamically to your email template as:
{{ object.title }}
{{ object.postDate|date('Y-m-d) }}
{{ object.excerpt }}