I wrote on subscribing (read-only) to Google icalendars in german, I’ll restate the gist:
There are private and public web ical endpoints, difference being some hashes to protect them from guessing. Private:
https://calendar.google.com/calendar/ical/<long-hash>%40group.calendar.google.com/private-<small-hash>/basic.ics
public:
https://calendar.google.com/calendar/ical/info@example.com/public/basic.ics
Then you enter that address in “Settings → Accounts → + Web Calendar Manager”
As for Exchange, it can publish .ics endpoints - Introduction to publishing Internet Calendars - Microsoft Support