To help with non-interactive sessions, in the context of the advice on the website here:
Could this be made even smoother by detecting if in an interactive session or not (e.g. if(interactive()), and if FALSE defaulting the gargle_oauth_email = TRUE option?
It will cover 95% of the use cases I've seen (where a user has one cache token on a server for scheduled tasks) and prevent a potential hangup when the option is not set and the interactive menu comes up. I favour the JSON service email option instead, but that usually involves adding the service email to accounts that may not be possible.