Share a Nextcloud calendar with Google Calendar - synchronization fails

Relatively new Nextcloud user here - trying to figure out why events aren’t synced properly from a calendar created in Nextcloud to a Google Calendar.

The gory details:

Nextcloud version: 18.0.4
Nextcloud Calendar App version: 2.0.3

What I did:

  1. Created a calendar in Nextcloud and pressed the share button in the left sidebar. I then pressed the “+” sign and made the calendar public.
  2. I created an event in the near future in the new calendar. I pressed the link button in the left sidebar and to “Copy public link”.
  3. I then took this link - https://.your-storageshare.de/apps/calendar/p/sHe3i79WPzk5Ssom - and added this in my Google Calendar via the add by URL option (https://calendar.google.com/calendar/b/1/r/settings/addbyurl)
  4. I paste the Nextcloud calendar link into the form and the calendar is succesfully added. BUT the event is not synchronized.

I have tried this multiple times and once I succeeded in getting an event imported into the Google Calendar, but when I changed the date for the event in Nextcloud, it never updated in Google ( it has now been more than 5 weeks and it still shows the wrong date).

A curl request looks like this:

$ curl -I "https://<some-id>.your-storageshare.de/apps/calendar/p/sHe3i79WPzk5Ssom"
HTTP/2 200 
server: nginx
date: Fri, 22 May 2020 21:37:10 GMT
content-type: text/html; charset=UTF-8
content-length: 5704
vary: Accept-Encoding
set-cookie: ocd2hkv0smyl=3428571613265dff05066b8fc0bff7f9; path=/; secure; HttpOnly
expires: Thu, 19 Nov 1981 08:52:00 GMT
pragma: no-cache
set-cookie: oc_sessionPassphrase=%2BJGNVzm99xyvKpyRFLm4fiM4DPxTFpdhX6cj%2B3MnlkbN%2FmuA1gNiY03jS9xS7gjoO2X03EwaUjNYcZ8vU60HR6d2lSl0K2D%2FfTYf01%2F8DJHlRuTkTPAp0TIY8K1g3G3a; path=/; secure; HttpOnly
set-cookie: __Host-nc_sameSiteCookielax=true; path=/; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=lax
set-cookie: __Host-nc_sameSiteCookiestrict=true; path=/; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=strict
cache-control: no-cache, no-store, must-revalidate
content-security-policy: default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';worker-src 'self' blob:;form-action 'self'
feature-policy: autoplay 'self';camera 'none';fullscreen 'self';geolocation 'none';microphone 'none';payment 'none'
strict-transport-security: max-age=15768000; includeSubDomains
referrer-policy: strict-origin
x-content-type-options: nosniff
x-download-options: noopen
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
x-robots-tag: none
x-xss-protection: 1; mode=block

During my search for a solution the following issues seemed to describe similar problems:


I wanted to ask here first before I create an issue in Github. Hope somebody can help me out :slight_smile:

Best regards,
Ben

You should copy not the page URL, but the link provided by the « Copy subscription link » option. Screenshot in french below.

Note the URL is something like webcals://<some-id>.your-storageshare.de/remote.php/dav/public-calendars/<some-token>/?export. If Google doesn’t accept the webcals:// prefix, you can change it to https://.

image

Hi tcit, thanks for your reply.

It seems my UI is a bit different than yours. Maybe we are running different versions?

In all cases - thanks for clarifying which link to use! I do not get the webcals protocol but https. But I guess this is ok - I think I remember reading in an issue somewhere, that this is more accepted by various calendar clients.

So - what I have tried now is the following:

After I create a new calendar, I have the option to create a share link.
Screenshot 2020-05-24 at 14.35.02

On the screenshot above I have created a share link for “test2” but not for “test”.

My understanding is, that I should create a share link and then get the URL by clicking on “Copy subscription link”. See screenshot below:

When I copy the link this is what I get:

https://some-id.your-storageshare.de/remote.php/dav/public-calendars/sHe3i79WPzk5Ssom?export

I have added this to Google Calendar the same way as described in my first post - but the event is still not synced (I will update tomorrow to ensure that it is not some latency / caching issue at play).

EDIT: Ok so I played around with this a bit more, and found some interesting points: You can actually add a Nextcloud calendar to Google with the URL you get when you click the “Copy public link” icon. But your events will not propagate to the Google Calendar - at least not in my case. The fact that there is two links that both can be added to e.g. Google Calendar is quite confusing to me - and maybe also to others.

After I made a 3rd test calendar and added it to Google Calendar with the right link (the subscription link) without having added it first via the “Copy public link” URL my event was shown in the Google Calendar. Hooray! So at the moment I am testing if changes to my event and new events made to my test3 will be synced to Google. Will keep you updated.

I want to take this opportunity to thank you and the rest of the team working on Nextcloud in general and the Calendar app specifically. The effort to create an open source alternative is very appreciated. Hope I can contribute a bit by pointing to bugs or things that need clarification.

Last time I checked Google refreshes external calendars at most on a 24 hour basis.
https://support.google.com/calendar/answer/37100?hl=en&ref_topic=1672445&co=GENIE.Platform%3DDesktop&oco=0

I can confirm that changes to events are propagated via the subscription link - at least in some cases: I tried adding my “test3” calendar to my MacOS native calendar app via “New Calendar Subscription” and the updated events were propagated as soon as I changed the MacOS calendar setting “Auto refresh” to 5 min.

So now the question is how long we have to wait for Google…

OK - the changes have been synchronized to the Google calendar now. I don’t know exactly how long it took.

On the Google info page it now says 12 hours.

I guess the troubles I have been facing in the past (with events not synchronising at all) must stem from having used the wrong URL, as mentioned above.

Thanks for your input on this @tcit!