Regarding your first post, having the ability to clear the cache from a scheduled email job is something the Looker Product team is working on, but until there’s a cache management solution within email scheduling there are a couple of things you can try.
One thing to consider is using a scripted cron job to make an API call to clear cache before the scheduled email is sent. Doing this will help ensure that the scheduled email runs fresh queries before sending instead of pulling from query cache.
Another thing to experiment with is using the persist_for parameter at either the explore or model level to extend the time queries are allowed to be fetched from cache. Doing this overrides the default cache time of one hour (as of Looker 4.2, from five minutes in previous versions). If you set a persist_for of 24 hours, for instance, queries will be pulled from cache for that period, except when a user selects ‘Clear Cache and Refresh’ when running an explore, look or dashboard which ‘resets’ the cache timer for another 24 hours. That is, setting a 24-hour persist_for won’t automatically hold cache for one day, it will hold queries in cache for 24 hours from the last time the cache was cleared. If users are clearing cache every five minutes, for instance, the cache will persist for five minutes regardless of the persist_for setting.
Persist_for, in combination with API calls to clear cache before sending the scheduled email may do what you need!
Regarding your second post, caching logic is the same for both Dashboards and Looks.
I hope that helps!