Upgrading to Nextcloud 18 broke both importing public Google calendars and external calendars so that they don’t update automatically. Fortunately, both of these issues have workarounds

Importing Google Calendars

For external calendars, Nextcloud needs a .ics or .ical file. To add a Google Calendar, we just have to adjust the URL's formatting which you can do automatically using this online tool. Alternatively, you can follow the manual method below.

For embedded calendars (in this example the Codeforces calendar) you can find the cid by clicking on the plus button in the bottom right corner which will open the following URL:

https://calendar.google.com/calendar/[email protected]&ctz=America/Chicago

Alternatively, you can get also use inspect element which will yield the following URL containing the src:

https://calendar.google.com/calendar/[email protected]&ctz=America/Chicago&hl=en&wkst=1

Then take everything after src=, cid=, or /ical/ and up to the next & sign, oftentimes this will look something like [id]@[group].calendar.google.com. Then, take this string and add it to the following:

https://calendar.google.com/calendar/ical/[add here!]/public/basic.ics

For example, using the Codeforces calendar you'd grab [email protected] and get the following:

https://calendar.google.com/calendar/ical/[email protected]/public/basic.ics

You can then use this URL to as the external URL in the Nextcloud Calendar app.

Automatically Updating Calendars

The default subscription refreshing interval is of one week (unless the subscription itself asks for a different rate).

You may override it with something like:

sudo -u www-data php /var/www/html/occ config:app:set dav calendarSubscriptionRefreshRate --value "P1DT6H"

which would set the interval to 1 day and 6 hours. The --value data type is DataInterval.