How to execute a hook asynchronously?

Yes, that’s what the WP Cron system does. It will fire an action/hook as close to a requested time as it can, and can do it once or multiple times.

You would still have a hook that runs on profile_update but it wouldn’t send data to google spreadsheets, rather it would schedule a cron job that executes an action, and you would send that data on that action.

Note though that you will need to check if the cron job has been scheduled already or not to avoid duplication, and you will need to give it everything it needs to do its job as it will not be the same request ( any variables/GET/POST/FILES/etc will not be accessible, new request, blanks slate ).

For information and examples of WP Cron, refer to the official plugin handbook on the WP developers site