I had a moment of panic when several of my Scriptable scripts that accessed local calendars were broken after the iOS 17 upgrade.
Luckily I read this old post, which suggested checking app permissions:
Settings > Scriptable > Calendars
For anyone else that may google this in the future, with “Add Events Only” access granted to Scriptable, this is the result of trying to fetch all event calendars:
const cals = await Calendar.forEvents();
console.log(JSON.stringify(cals, null, 2))
[
{
"identifier": "VIRTUAL_APP_CALENDAR_UUID",
"title": "Calendar",
"isSubscribed": false,
"allowsContentModifications": true,
"color": {
"hex": "FF2968",
"red": 1,
"green": 0.1607843041419983,
"blue": 0.40784314274787903,
"alpha": 1
}
}
]
It seems like iOS 17 automatically lowered the permissions for this app for some reason.