How to submit a button automatically after every scheduled hours?

You were on the right track with the second try. Put this is functions.php, or wherever:

if (!wp_next_scheduled('fetch_webcategories_hook')) {
    wp_schedule_event( time(), 'hourly', 'fetch_webcategories_hook' );
}
add_action ( 'fetch_webcategories_hook', 'fetch_webcategories' );

It’s not quite a real hourly schedule because somebody has to visit the site to trigger it, so if you have VERY low traffic it might not run. Any time the site loads, it checks to see if it’s time to do it, so if you get anything from 1 visitor an hour to a constant flood of traffic, it will run once an hour. Crawlers will trigger it, so if it’s a public site, it should run at least occasionally. You could also leave a page, any page, up on a browser on a computer that doesn’t go to sleep with a meta refresh tag:

<meta http-equiv="refresh" content="3600">

If you want to be really sure, you could set up monitoring. I do it with Rackspace because that’s where my cloud servers are, but a quick google search turned up this site: https://uptimerobot.com/ which looks like it would do the job.

WP Crontrol is an excellent plugin for dealing with wordpress cron stuff.
https://wordpress.org/plugins/wp-crontrol/