I was having the hardest time trying to share my Exchange / Office365 calendar with a GMail user. No success until I came across this post. Halfway down ashrock says:
Change the “http” in the ics file address to “webcal.” Problem solved. After seeing this, I cannot fathom why Google doesn’t just change the URL for the private iCal address.